arc402-cli 1.8.7 → 1.8.8

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.
Files changed (84) hide show
  1. package/dist/commands/wallet.d.ts.map +1 -1
  2. package/dist/commands/wallet.js +18 -0
  3. package/dist/commands/wallet.js.map +1 -1
  4. package/dist/commands/workroom.js +1 -1
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +36 -47
  7. package/dist/config.js.map +1 -1
  8. package/dist/index.js +11 -5
  9. package/dist/index.js.map +1 -1
  10. package/package.json +2 -2
  11. package/dist/tui-esm/App.js +0 -136
  12. package/dist/tui-esm/App.js.map +0 -1
  13. package/dist/tui-esm/Footer.js +0 -13
  14. package/dist/tui-esm/Footer.js.map +0 -1
  15. package/dist/tui-esm/Header.js +0 -19
  16. package/dist/tui-esm/Header.js.map +0 -1
  17. package/dist/tui-esm/InputLine.js +0 -121
  18. package/dist/tui-esm/InputLine.js.map +0 -1
  19. package/dist/tui-esm/Viewport.js +0 -39
  20. package/dist/tui-esm/Viewport.js.map +0 -1
  21. package/dist/tui-esm/WalletConnectPairing.js +0 -61
  22. package/dist/tui-esm/WalletConnectPairing.js.map +0 -1
  23. package/dist/tui-esm/command-catalog.js +0 -20
  24. package/dist/tui-esm/command-catalog.js.map +0 -1
  25. package/dist/tui-esm/command-renderers.js +0 -180
  26. package/dist/tui-esm/command-renderers.js.map +0 -1
  27. package/dist/tui-esm/commerce-format.js +0 -19
  28. package/dist/tui-esm/commerce-format.js.map +0 -1
  29. package/dist/tui-esm/components/Button.js +0 -21
  30. package/dist/tui-esm/components/Button.js.map +0 -1
  31. package/dist/tui-esm/components/CeremonyView.js +0 -10
  32. package/dist/tui-esm/components/CeremonyView.js.map +0 -1
  33. package/dist/tui-esm/components/CompletionDropdown.js +0 -23
  34. package/dist/tui-esm/components/CompletionDropdown.js.map +0 -1
  35. package/dist/tui-esm/components/ConfirmPrompt.js +0 -10
  36. package/dist/tui-esm/components/ConfirmPrompt.js.map +0 -1
  37. package/dist/tui-esm/components/CustomTextInput.js +0 -99
  38. package/dist/tui-esm/components/CustomTextInput.js.map +0 -1
  39. package/dist/tui-esm/components/InteractiveTable.js +0 -61
  40. package/dist/tui-esm/components/InteractiveTable.js.map +0 -1
  41. package/dist/tui-esm/components/StepSpinner.js +0 -32
  42. package/dist/tui-esm/components/StepSpinner.js.map +0 -1
  43. package/dist/tui-esm/components/Toast.js +0 -29
  44. package/dist/tui-esm/components/Toast.js.map +0 -1
  45. package/dist/tui-esm/components/commerce/AgreementList.js +0 -25
  46. package/dist/tui-esm/components/commerce/AgreementList.js.map +0 -1
  47. package/dist/tui-esm/components/commerce/ComputeCard.js +0 -9
  48. package/dist/tui-esm/components/commerce/ComputeCard.js.map +0 -1
  49. package/dist/tui-esm/components/commerce/DiscoverList.js +0 -14
  50. package/dist/tui-esm/components/commerce/DiscoverList.js.map +0 -1
  51. package/dist/tui-esm/components/commerce/HireCard.js +0 -11
  52. package/dist/tui-esm/components/commerce/HireCard.js.map +0 -1
  53. package/dist/tui-esm/components/commerce/RoundsList.js +0 -9
  54. package/dist/tui-esm/components/commerce/RoundsList.js.map +0 -1
  55. package/dist/tui-esm/components/commerce/SquadCard.js +0 -10
  56. package/dist/tui-esm/components/commerce/SquadCard.js.map +0 -1
  57. package/dist/tui-esm/components/commerce/StatusCard.js +0 -10
  58. package/dist/tui-esm/components/commerce/StatusCard.js.map +0 -1
  59. package/dist/tui-esm/components/commerce/SubscribeCard.js +0 -10
  60. package/dist/tui-esm/components/commerce/SubscribeCard.js.map +0 -1
  61. package/dist/tui-esm/components/commerce/WorkroomCard.js +0 -10
  62. package/dist/tui-esm/components/commerce/WorkroomCard.js.map +0 -1
  63. package/dist/tui-esm/components/commerce/common.js +0 -71
  64. package/dist/tui-esm/components/commerce/common.js.map +0 -1
  65. package/dist/tui-esm/components/commerce/index.js +0 -27
  66. package/dist/tui-esm/components/commerce/index.js.map +0 -1
  67. package/dist/tui-esm/index.js +0 -55
  68. package/dist/tui-esm/index.js.map +0 -1
  69. package/dist/tui-esm/kernel.js +0 -734
  70. package/dist/tui-esm/kernel.js.map +0 -1
  71. package/dist/tui-esm/render-inline.js +0 -32
  72. package/dist/tui-esm/render-inline.js.map +0 -1
  73. package/dist/tui-esm/useChat.js +0 -91
  74. package/dist/tui-esm/useChat.js.map +0 -1
  75. package/dist/tui-esm/useCommand.js +0 -142
  76. package/dist/tui-esm/useCommand.js.map +0 -1
  77. package/dist/tui-esm/useNotifications.js +0 -17
  78. package/dist/tui-esm/useNotifications.js.map +0 -1
  79. package/dist/tui-esm/useScroll.js +0 -46
  80. package/dist/tui-esm/useScroll.js.map +0 -1
  81. package/dist/tui-esm/useTerminalSize.js +0 -32
  82. package/dist/tui-esm/useTerminalSize.js.map +0 -1
  83. package/hermes/plugins/dist/arc402_hermes-1.0.0-py3-none-any.whl +0 -0
  84. package/hermes/plugins/dist/arc402_hermes-1.0.0.tar.gz +0 -0
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WalletConnectPairing = WalletConnectPairing;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const ink_1 = require("ink");
7
- const qr_render_js_1 = require("../ui/qr-render.js");
8
- /**
9
- * Renders WalletConnect pairing inside the Ink TUI viewport:
10
- * - ASCII QR code
11
- * - Deep links for MetaMask, Rainbow, Trust, etc.
12
- * - Status transitions: connecting → connected → chain-switching → ready
13
- */
14
- function WalletConnectPairing({ onComplete, onError, connect, }) {
15
- const [stage, setStage] = (0, react_1.useState)("connecting");
16
- const [uri, setUri] = (0, react_1.useState)(null);
17
- const [links, setLinks] = (0, react_1.useState)({});
18
- const [account, setAccount] = (0, react_1.useState)(null);
19
- const [qrLines, setQrLines] = (0, react_1.useState)([]);
20
- const [detail, setDetail] = (0, react_1.useState)("");
21
- const handleUri = (0, react_1.useCallback)((wcUri, wcLinks) => {
22
- setUri(wcUri);
23
- setLinks(wcLinks);
24
- // Generate ASCII QR using our compact renderer
25
- try {
26
- const lines = (0, qr_render_js_1.renderQR)(wcUri);
27
- setQrLines(lines);
28
- }
29
- catch {
30
- // QR rendering is best-effort
31
- }
32
- }, []);
33
- const handleStatus = (0, react_1.useCallback)((status, statusDetail) => {
34
- setStage(status);
35
- if (statusDetail)
36
- setDetail(statusDetail);
37
- if (status === "connected" && statusDetail) {
38
- setAccount(statusDetail);
39
- }
40
- }, []);
41
- (0, react_1.useEffect)(() => {
42
- const callbacks = {
43
- onUri: handleUri,
44
- onStatus: handleStatus,
45
- };
46
- connect(callbacks)
47
- .then((result) => onComplete(result))
48
- .catch((err) => onError(err instanceof Error ? err.message : String(err)));
49
- }, [connect, handleUri, handleStatus, onComplete, onError]);
50
- const statusIcon = stage === "error" ? "✗" : stage === "ready" ? "✓" : "◈";
51
- const statusColor = stage === "error" ? "red" : stage === "ready" ? "green" : "cyan";
52
- const statusMessages = {
53
- connecting: "Waiting for wallet approval...",
54
- connected: `Connected: ${account ?? ""}`,
55
- "chain-switching": `Switching chain${detail ? `: ${detail}` : ""}...`,
56
- ready: `Ready — ${account ?? ""}`,
57
- error: detail || "Connection failed",
58
- };
59
- return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", paddingLeft: 1, children: [(0, jsx_runtime_1.jsx)(ink_1.Text, { color: "cyan", bold: true, children: "WalletConnect Pairing" }), (0, jsx_runtime_1.jsx)(ink_1.Text, { children: " " }), (0, jsx_runtime_1.jsxs)(ink_1.Box, { children: [(0, jsx_runtime_1.jsxs)(ink_1.Text, { color: statusColor, children: [statusIcon, " "] }), (0, jsx_runtime_1.jsx)(ink_1.Text, { children: statusMessages[stage] })] }), (0, jsx_runtime_1.jsx)(ink_1.Text, { children: " " }), uri && stage === "connecting" && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "Tap a link for your wallet app:" }), (0, jsx_runtime_1.jsx)(ink_1.Text, { children: " " }), Object.entries(links).map(([name, link]) => ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "white", children: [name, ":"] }), (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: link }), (0, jsx_runtime_1.jsx)(ink_1.Text, { children: " " })] }, name))), qrLines.length > 0 && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "Or scan QR:" }), qrLines.map((line, i) => ((0, jsx_runtime_1.jsx)(ink_1.Text, { children: line }, i)))] }))] }))] }));
60
- }
61
- //# sourceMappingURL=WalletConnectPairing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WalletConnectPairing.js","sourceRoot":"","sources":["../../src/tui/WalletConnectPairing.tsx"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TUI_SUBCOMMANDS = exports.TUI_TOP_LEVEL_COMMANDS = exports.BUILTIN_CMDS = void 0;
4
- exports.BUILTIN_CMDS = ["help", "exit", "quit", "clear", "status"];
5
- exports.TUI_TOP_LEVEL_COMMANDS = [
6
- "status",
7
- "discover",
8
- "agreements",
9
- "workroom",
10
- "subscription",
11
- "subscribe",
12
- "arena",
13
- ];
14
- exports.TUI_SUBCOMMANDS = {
15
- workroom: ["status", "worker"],
16
- subscription: ["status", "list", "cancel", "topup"],
17
- arena: ["rounds", "squad"],
18
- squad: ["list", "info"],
19
- };
20
- //# sourceMappingURL=command-catalog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-catalog.js","sourceRoot":"","sources":["../../src/tui/command-catalog.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAEpE,QAAA,sBAAsB,GAAG;IACpC,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,UAAU;IACV,cAAc;IACd,WAAW;IACX,OAAO;CACC,CAAC;AAEE,QAAA,eAAe,GAA6B;IACvD,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC9B,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;IACnD,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC1B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,CAAC"}
@@ -1,180 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.printStatusCard = printStatusCard;
4
- exports.printDiscoverList = printDiscoverList;
5
- exports.printHireCard = printHireCard;
6
- exports.printAgreementList = printAgreementList;
7
- exports.printComputeCard = printComputeCard;
8
- exports.printSubscribeCard = printSubscribeCard;
9
- exports.printRoundsList = printRoundsList;
10
- exports.printSquadCard = printSquadCard;
11
- exports.printWorkroomCard = printWorkroomCard;
12
- const commerce_format_1 = require("./commerce-format");
13
- const render_inline_1 = require("./render-inline");
14
- function emit(lines) {
15
- for (const line of lines)
16
- (0, render_inline_1.writeTuiLine)(line);
17
- }
18
- function separator() {
19
- return "─".repeat(60);
20
- }
21
- function badge(label) {
22
- return label ? ` ${label}` : "";
23
- }
24
- function detail(label, value) {
25
- return ` ${label.padEnd(14)} ${value}`;
26
- }
27
- function bullet(value) {
28
- return ` • ${value}`;
29
- }
30
- function listItem(title, meta, detailLine, status) {
31
- return [
32
- `${title}${badge(status)}`,
33
- ...(meta ? [meta] : []),
34
- ...(detailLine ? [detailLine] : []),
35
- ];
36
- }
37
- async function printStatusCard(props) {
38
- emit([
39
- "◈ Wallet Status",
40
- `${props.wallet}${badge(props.status?.label)}`,
41
- props.network,
42
- separator(),
43
- detail("balance", props.balance ?? "n/a"),
44
- detail("endpoint", props.endpoint ?? "n/a"),
45
- ...(typeof props.trustScore === "number"
46
- ? [detail("trust", (0, commerce_format_1.formatPercent)(Math.min(100, Math.max(0, props.trustScore / 5)), 1))]
47
- : []),
48
- ...(props.agreements
49
- ? [
50
- "",
51
- "agreements",
52
- detail("active", String(props.agreements.active)),
53
- detail("verify", String(props.agreements.pendingVerification)),
54
- detail("disputed", String(props.agreements.disputed)),
55
- ]
56
- : []),
57
- ...(props.workroom
58
- ? [
59
- "",
60
- "workroom",
61
- detail("status", props.workroom.status),
62
- detail("jobs", String(props.workroom.activeJobs ?? 0)),
63
- detail("harness", props.workroom.harness ?? "n/a"),
64
- ]
65
- : []),
66
- ]);
67
- }
68
- async function printDiscoverList(props) {
69
- emit([
70
- "◈ Discover",
71
- `${props.title ?? "Discover Results"}${badge(props.status?.label)}`,
72
- ...(props.summary ? [props.summary] : []),
73
- separator(),
74
- ...props.agents.flatMap((agent) => listItem(`#${agent.rank} ${agent.name}`, `${agent.wallet} · trust ${agent.trustScore}${agent.priceLabel ? ` · ${agent.priceLabel}` : ""}`, `${agent.serviceType}${agent.capabilitySummary ? ` · ${agent.capabilitySummary}` : ""}${typeof agent.compositeScore === "number" ? ` · score ${(0, commerce_format_1.formatPercent)(agent.compositeScore * 100, 1)}` : ""}`, agent.endpointStatus).map((line) => ` ${line}`)),
75
- `${props.agents.length} ranked result${props.agents.length === 1 ? "" : "s"}`,
76
- ]);
77
- }
78
- async function printHireCard(props) {
79
- emit([
80
- "◈ Hire",
81
- `${props.providerName ? `${props.providerName} · ${props.providerAddress}` : props.providerAddress}${badge(props.status?.label)}`,
82
- props.capability,
83
- separator(),
84
- detail("price", props.price),
85
- detail("deadline", props.deadline ?? "open"),
86
- detail("agreement", props.agreementId ?? "pending"),
87
- detail("tx", props.txHash ?? "not submitted"),
88
- ...((props.notes ?? []).length > 0
89
- ? ["", "operator notes", ...(props.notes ?? []).map(bullet)]
90
- : []),
91
- ]);
92
- }
93
- async function printAgreementList(props) {
94
- emit([
95
- "◈ Agreements",
96
- `${props.roleLabel ?? "Recent Agreements"}${badge(props.status?.label)}`,
97
- ...(props.totalEscrowLabel ? [props.totalEscrowLabel] : []),
98
- separator(),
99
- ...(props.agreements.length > 0
100
- ? props.agreements.flatMap((agreement) => listItem(`#${agreement.id} ${agreement.counterparty}`, `${agreement.serviceType}${agreement.price ? ` · ${agreement.price}` : ""}`, agreement.verifyWindowMinutes !== undefined
101
- ? `verify window ${(0, commerce_format_1.formatCountdown)(agreement.verifyWindowMinutes)}`
102
- : agreement.deadlineMinutes !== undefined
103
- ? `deadline ${(0, commerce_format_1.formatCountdown)(agreement.deadlineMinutes)}`
104
- : undefined, agreement.status).map((line) => ` ${line}`))
105
- : [" No agreements found."]),
106
- ]);
107
- }
108
- async function printComputeCard(props) {
109
- emit([
110
- "◈ Compute Session",
111
- `${props.sessionId}${badge(props.status?.label)}`,
112
- `${props.provider} · ${props.gpuSpec}`,
113
- separator(),
114
- detail("rate", props.rateLabel),
115
- detail("consumed", props.consumedLabel ?? "n/a"),
116
- detail("cost", props.costLabel ?? "n/a"),
117
- detail("remaining", props.remainingLabel ?? "n/a"),
118
- ...(props.utilizationPercent !== undefined
119
- ? [detail("utilization", (0, commerce_format_1.formatPercent)(props.utilizationPercent, 2))]
120
- : []),
121
- ]);
122
- }
123
- async function printSubscribeCard(props) {
124
- emit([
125
- "◈ Subscription",
126
- `${props.provider}${badge(props.status?.label)}`,
127
- props.planId,
128
- separator(),
129
- detail("rate", props.rateLabel),
130
- detail("months", String(props.months ?? 1)),
131
- detail("renewal", props.nextRenewalLabel ?? "immediate access"),
132
- detail("payments", props.paymentOptions?.length ? props.paymentOptions.join(", ") : "subscription"),
133
- ...((props.accessSummary ?? []).length > 0
134
- ? ["", "access", ...(props.accessSummary ?? []).map(bullet)]
135
- : []),
136
- ]);
137
- }
138
- async function printRoundsList(props) {
139
- emit([
140
- "◈ Arena",
141
- `${props.title ?? "Arena Rounds"}${badge(props.status?.label)}`,
142
- separator(),
143
- ...(props.rounds.length > 0
144
- ? props.rounds.flatMap((round) => listItem(`#${round.id} ${round.question}`, `${round.category ?? "uncategorized"} · ${round.timingLabel}`, `YES ${round.yesLabel} · NO ${round.noLabel}`, round.resolved ? (round.outcomeLabel ?? "resolved") : "open").map((line) => ` ${line}`))
145
- : [" No arena rounds found."]),
146
- "Built for round boards and live resolution views.",
147
- ]);
148
- }
149
- async function printSquadCard(props) {
150
- emit([
151
- "◈ Squad",
152
- `${props.name}${badge(props.status?.label ?? props.statusLabel)}`,
153
- props.id,
154
- separator(),
155
- detail("domain", props.domainTag),
156
- detail("members", String(props.memberCount)),
157
- detail("invite", props.inviteOnly ? "yes" : "no"),
158
- detail("creator", props.creator ?? "n/a"),
159
- ...((props.members ?? []).length > 0
160
- ? ["", "members", ...(props.members ?? []).map((member) => bullet(`${member.agent}${member.role ? ` · ${member.role}` : ""}${member.trustScore !== undefined ? ` · trust ${member.trustScore}` : ""}`))]
161
- : []),
162
- ...((props.briefings ?? []).length > 0
163
- ? ["", "briefings", ...(props.briefings ?? []).map((briefing) => bullet(`${briefing.preview}${briefing.publishedLabel ? ` · ${briefing.publishedLabel}` : ""}${briefing.tags?.length ? ` · ${briefing.tags.join(", ")}` : ""}`))]
164
- : []),
165
- ]);
166
- }
167
- async function printWorkroomCard(props) {
168
- emit([
169
- "◈ Workroom",
170
- `${props.runtime ?? "Governed execution environment"}${badge(props.status?.label ?? props.statusLabel)}`,
171
- separator(),
172
- detail("harness", props.harness ?? "n/a"),
173
- detail("queue", String(props.queueDepth ?? props.activeJobs?.length ?? 0)),
174
- detail("policy", props.policyHash ?? "n/a"),
175
- ...((props.activeJobs ?? []).length > 0
176
- ? ["", "jobs", ...(props.activeJobs ?? []).map((job) => bullet(`${job.id} · ${job.status}${job.harness ? ` · ${job.harness}` : ""}${job.task ? ` · ${job.task}` : ""}`))]
177
- : []),
178
- ]);
179
- }
180
- //# sourceMappingURL=command-renderers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-renderers.js","sourceRoot":"","sources":["../../src/tui/command-renderers.tsx"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatPercent = formatPercent;
4
- exports.formatCountdown = formatCountdown;
5
- function formatPercent(value, digits = 0) {
6
- if (!Number.isFinite(value))
7
- return "0%";
8
- return `${value.toFixed(digits)}%`;
9
- }
10
- function formatCountdown(minutes) {
11
- if (minutes === undefined || minutes === null || !Number.isFinite(minutes))
12
- return "n/a";
13
- if (minutes < 60)
14
- return `${Math.max(0, Math.round(minutes))}m`;
15
- const hours = Math.floor(minutes / 60);
16
- const mins = Math.round(minutes % 60);
17
- return `${hours}h ${mins}m`;
18
- }
19
- //# sourceMappingURL=commerce-format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commerce-format.js","sourceRoot":"","sources":["../../src/tui/commerce-format.ts"],"names":[],"mappings":";;AAAA,sCAGC;AAED,0CAMC;AAXD,SAAgB,aAAa,CAAC,KAAa,EAAE,MAAM,GAAG,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AACrC,CAAC;AAED,SAAgB,eAAe,CAAC,OAAgB;IAC9C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACzF,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACtC,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC;AAC9B,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Button = Button;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const ink_1 = require("ink");
6
- const VARIANT_COLORS = {
7
- primary: "cyan",
8
- danger: "red",
9
- dim: "gray",
10
- };
11
- function Button({ label, onPress, variant = "primary" }) {
12
- const { isFocused } = (0, ink_1.useFocus)();
13
- (0, ink_1.useInput)((_input, key) => {
14
- if (key.return) {
15
- onPress();
16
- }
17
- }, { isActive: isFocused });
18
- const color = isFocused ? VARIANT_COLORS[variant] ?? "cyan" : "white";
19
- return ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: color, bold: isFocused, children: [isFocused ? "▸ " : " ", label] }) }));
20
- }
21
- //# sourceMappingURL=Button.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/tui/components/Button.tsx"],"names":[],"mappings":";;AAeA,wBAsBC;;AApCD,6BAAoD;AAQpD,MAAM,cAAc,GAA2B;IAC7C,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF,SAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,EAAe;IACzE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAQ,GAAE,CAAC;IAEjC,IAAA,cAAQ,EACN,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACd,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;IAEF,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAEtE,OAAO,CACL,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,aAChC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EACvB,KAAK,IACD,GACH,CACP,CAAC;AACJ,CAAC"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CeremonyView = CeremonyView;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const ink_1 = require("ink");
6
- const StepSpinner_js_1 = require("./StepSpinner.js");
7
- function CeremonyView({ title, steps }) {
8
- return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { marginBottom: 1, children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { bold: true, color: "cyan", children: ["\u25C8 ", title] }) }), steps.map((step, i) => ((0, jsx_runtime_1.jsx)(StepSpinner_js_1.StepSpinner, { step: i + 1, total: steps.length, label: step.label, status: step.status, detail: step.detail, error: step.error }, i)))] }));
9
- }
10
- //# sourceMappingURL=CeremonyView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CeremonyView.js","sourceRoot":"","sources":["../../../src/tui/components/CeremonyView.tsx"],"names":[],"mappings":";;AAiBA,oCAqBC;;AArCD,6BAAgC;AAChC,qDAA+C;AAe/C,SAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAqB;IAC9D,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,uBAAC,SAAG,IAAC,YAAY,EAAE,CAAC,YAClB,wBAAC,UAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,wBAClB,KAAK,IACH,GACH,EACL,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,uBAAC,4BAAW,IAEV,IAAI,EAAE,CAAC,GAAG,CAAC,EACX,KAAK,EAAE,KAAK,CAAC,MAAM,EACnB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,KAAK,EAAE,IAAI,CAAC,KAAK,IANZ,CAAC,CAON,CACH,CAAC,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CompletionDropdown = CompletionDropdown;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const ink_1 = require("ink");
6
- const MAX_VISIBLE = 8;
7
- function CompletionDropdown({ candidates, selectedIndex, visible, }) {
8
- if (!visible || candidates.length === 0)
9
- return null;
10
- // Window the list if there are too many candidates
11
- let startIdx = 0;
12
- if (candidates.length > MAX_VISIBLE) {
13
- startIdx = Math.max(0, selectedIndex - Math.floor(MAX_VISIBLE / 2));
14
- startIdx = Math.min(startIdx, candidates.length - MAX_VISIBLE);
15
- }
16
- const visibleCandidates = candidates.slice(startIdx, startIdx + MAX_VISIBLE);
17
- return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", marginLeft: 4, children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "┌─ completions ─" }) }), visibleCandidates.map((candidate, i) => {
18
- const actualIdx = startIdx + i;
19
- const isSelected = actualIdx === selectedIndex;
20
- return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { children: [(0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "│" }), (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: isSelected ? "cyan" : "white", bold: isSelected, children: [isSelected ? " ▸ " : " ", candidate] })] }, candidate));
21
- }), (0, jsx_runtime_1.jsxs)(ink_1.Box, { children: [(0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "└─" }), candidates.length > MAX_VISIBLE && ((0, jsx_runtime_1.jsxs)(ink_1.Text, { dimColor: true, children: [" ", "(", candidates.length, " total)"] }))] })] }));
22
- }
23
- //# sourceMappingURL=CompletionDropdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CompletionDropdown.js","sourceRoot":"","sources":["../../../src/tui/components/CompletionDropdown.tsx"],"names":[],"mappings":";;AAWA,gDA4CC;;AAtDD,6BAAgC;AAQhC,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,SAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,aAAa,EACb,OAAO,GACiB;IACxB,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAErD,mDAAmD;IACnD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,UAAU,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;QACpC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QACpE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CACxC,QAAQ,EACR,QAAQ,GAAG,WAAW,CACvB,CAAC;IAEF,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,aACvC,uBAAC,SAAG,cACF,uBAAC,UAAI,IAAC,QAAQ,kBAAE,kBAAkB,GAAQ,GACtC,EACL,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;gBACtC,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC,CAAC;gBAC/B,MAAM,UAAU,GAAG,SAAS,KAAK,aAAa,CAAC;gBAC/C,OAAO,CACL,wBAAC,SAAG,eACF,uBAAC,UAAI,IAAC,QAAQ,kBAAE,GAAG,GAAQ,EAC3B,wBAAC,UAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,aACzD,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAC1B,SAAS,IACL,KALC,SAAS,CAMb,CACP,CAAC;YACJ,CAAC,CAAC,EACF,wBAAC,SAAG,eACF,uBAAC,UAAI,IAAC,QAAQ,kBAAE,IAAI,GAAQ,EAC3B,UAAU,CAAC,MAAM,GAAG,WAAW,IAAI,CAClC,wBAAC,UAAI,IAAC,QAAQ,mBAAE,GAAG,OAAG,UAAU,CAAC,MAAM,eAAe,CACvD,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConfirmPrompt = ConfirmPrompt;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const ink_1 = require("ink");
6
- const Button_js_1 = require("./Button.js");
7
- function ConfirmPrompt({ message, onConfirm, onCancel, confirmLabel = "Confirm", cancelLabel = "Cancel", }) {
8
- return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { marginBottom: 1, children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { bold: true, color: "cyan", children: ["\u25C8 ", message] }) }), (0, jsx_runtime_1.jsxs)(ink_1.Box, { gap: 2, children: [(0, jsx_runtime_1.jsx)(Button_js_1.Button, { label: confirmLabel, onPress: onConfirm, variant: "primary" }), (0, jsx_runtime_1.jsx)(Button_js_1.Button, { label: cancelLabel, onPress: onCancel, variant: "dim" })] }), (0, jsx_runtime_1.jsx)(ink_1.Box, { marginTop: 1, children: (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "Tab to switch \u00B7 Enter to select" }) })] }));
9
- }
10
- //# sourceMappingURL=ConfirmPrompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfirmPrompt.js","sourceRoot":"","sources":["../../../src/tui/components/ConfirmPrompt.tsx"],"names":[],"mappings":";;AAYA,sCAuBC;;AAlCD,6BAAgC;AAChC,2CAAqC;AAUrC,SAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,QAAQ,EACR,YAAY,GAAG,SAAS,EACxB,WAAW,GAAG,QAAQ,GACH;IACnB,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,uBAAC,SAAG,IAAC,YAAY,EAAE,CAAC,YAClB,wBAAC,UAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,wBAClB,OAAO,IACL,GACH,EACN,wBAAC,SAAG,IAAC,GAAG,EAAE,CAAC,aACT,uBAAC,kBAAM,IAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAC,SAAS,GAAG,EACrE,uBAAC,kBAAM,IAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAC,KAAK,GAAG,IAC3D,EACN,uBAAC,SAAG,IAAC,SAAS,EAAE,CAAC,YACf,uBAAC,UAAI,IAAC,QAAQ,2DAAuC,GACjD,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,99 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CustomTextInput = CustomTextInput;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const ink_1 = require("ink");
7
- /**
8
- * Minimal text input that does NOT intercept Tab, Up, Down, Escape, or Ctrl+C,
9
- * allowing parent useInput handlers to receive those keys.
10
- */
11
- function CustomTextInput({ value, onChange, onSubmit, focus = true, suppressEnter = false, }) {
12
- const [cursorPos, setCursorPos] = (0, react_1.useState)(value.length);
13
- const [cursorVisible, setCursorVisible] = (0, react_1.useState)(true);
14
- // Keep cursor within bounds when value changes externally
15
- (0, react_1.useEffect)(() => {
16
- setCursorPos((pos) => Math.min(pos, value.length));
17
- }, [value]);
18
- // Blink cursor
19
- (0, react_1.useEffect)(() => {
20
- if (!focus)
21
- return;
22
- const timer = setInterval(() => {
23
- setCursorVisible((v) => !v);
24
- }, 530);
25
- return () => clearInterval(timer);
26
- }, [focus]);
27
- (0, ink_1.useInput)((input, key) => {
28
- // Keys we explicitly do NOT handle — let parent see them:
29
- // Tab, Up, Down, Escape, Ctrl+C
30
- if (key.tab || key.upArrow || key.downArrow || key.escape)
31
- return;
32
- if (input === "\x03")
33
- return; // Ctrl+C
34
- // Enter/Return — submit (unless suppressed for dropdown selection)
35
- if (key.return) {
36
- if (!suppressEnter) {
37
- onSubmit?.(value);
38
- }
39
- return;
40
- }
41
- // Backspace
42
- if (key.backspace || key.delete) {
43
- if (cursorPos > 0) {
44
- const next = value.slice(0, cursorPos - 1) + value.slice(cursorPos);
45
- setCursorPos(cursorPos - 1);
46
- onChange(next);
47
- }
48
- return;
49
- }
50
- // Left arrow
51
- if (key.leftArrow) {
52
- setCursorPos((p) => Math.max(0, p - 1));
53
- return;
54
- }
55
- // Right arrow
56
- if (key.rightArrow) {
57
- setCursorPos((p) => Math.min(value.length, p + 1));
58
- return;
59
- }
60
- // Home (Ctrl+A)
61
- if (input === "\x01") {
62
- setCursorPos(0);
63
- return;
64
- }
65
- // End (Ctrl+E)
66
- if (input === "\x05") {
67
- setCursorPos(value.length);
68
- return;
69
- }
70
- // Ctrl+U — clear line
71
- if (input === "\x15") {
72
- setCursorPos(0);
73
- onChange("");
74
- return;
75
- }
76
- // Ctrl+K — kill to end of line
77
- if (input === "\x0B") {
78
- onChange(value.slice(0, cursorPos));
79
- return;
80
- }
81
- // Ignore other control characters
82
- if (input.length > 0 && input.charCodeAt(0) < 32)
83
- return;
84
- // Regular character input (including paste)
85
- if (input.length > 0) {
86
- const next = value.slice(0, cursorPos) + input + value.slice(cursorPos);
87
- setCursorPos(cursorPos + input.length);
88
- onChange(next);
89
- }
90
- }, { isActive: focus });
91
- if (!focus) {
92
- return (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: value });
93
- }
94
- const before = value.slice(0, cursorPos);
95
- const cursorChar = cursorPos < value.length ? value[cursorPos] : " ";
96
- const after = value.slice(cursorPos + 1);
97
- return ((0, jsx_runtime_1.jsxs)(ink_1.Text, { children: [before, (0, jsx_runtime_1.jsx)(ink_1.Text, { inverse: cursorVisible, children: cursorChar }), after] }));
98
- }
99
- //# sourceMappingURL=CustomTextInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CustomTextInput.js","sourceRoot":"","sources":["../../../src/tui/components/CustomTextInput.tsx"],"names":[],"mappings":"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"}
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InteractiveTable = InteractiveTable;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const ink_1 = require("ink");
7
- const MAX_VISIBLE_ROWS = 15;
8
- function InteractiveTable({ columns, rows, onSelect, selectedIndex: controlledIdx, }) {
9
- const [internalIdx, setInternalIdx] = (0, react_1.useState)(0);
10
- const selectedIndex = controlledIdx ?? internalIdx;
11
- (0, ink_1.useInput)((_input, key) => {
12
- if (key.upArrow) {
13
- setInternalIdx((i) => Math.max(0, i - 1));
14
- }
15
- if (key.downArrow) {
16
- setInternalIdx((i) => Math.min(rows.length - 1, i + 1));
17
- }
18
- if (key.return && onSelect && rows[selectedIndex]) {
19
- onSelect(rows[selectedIndex], selectedIndex);
20
- }
21
- });
22
- // Compute column widths
23
- const colWidths = columns.map((col) => {
24
- if (col.width)
25
- return col.width;
26
- let max = col.header.length;
27
- for (const row of rows) {
28
- const val = row[col.key] ?? "";
29
- if (val.length > max)
30
- max = val.length;
31
- }
32
- return Math.min(max + 2, 30);
33
- });
34
- const pad = (text, width, align = "left") => {
35
- const truncated = text.length > width ? text.slice(0, width - 1) + "…" : text;
36
- if (align === "right")
37
- return truncated.padStart(width);
38
- return truncated.padEnd(width);
39
- };
40
- // Window visible rows
41
- let startRow = 0;
42
- if (rows.length > MAX_VISIBLE_ROWS) {
43
- startRow = Math.max(0, selectedIndex - Math.floor(MAX_VISIBLE_ROWS / 2));
44
- startRow = Math.min(startRow, rows.length - MAX_VISIBLE_ROWS);
45
- }
46
- const visibleRows = rows.slice(startRow, startRow + MAX_VISIBLE_ROWS);
47
- // Header
48
- const headerLine = columns
49
- .map((col, i) => pad(col.header, colWidths[i], col.align))
50
- .join(" ");
51
- const separatorLine = "─".repeat(headerLine.length);
52
- return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { bold: true, color: "white", children: [" ", headerLine] }) }), (0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { dimColor: true, children: [" ", separatorLine] }) }), visibleRows.map((row, vi) => {
53
- const actualIdx = startRow + vi;
54
- const isSelected = actualIdx === selectedIndex;
55
- const line = columns
56
- .map((col, i) => pad(row[col.key] ?? "", colWidths[i], col.align))
57
- .join(" ");
58
- return ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: isSelected ? "cyan" : "white", bold: isSelected, children: [isSelected ? "▸" : " ", " ", line] }) }, actualIdx));
59
- }), rows.length > MAX_VISIBLE_ROWS && ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { dimColor: true, children: [" ", "(", rows.length, " rows \u00B7 \u2191\u2193 navigate \u00B7 Enter select)"] }) })), rows.length <= MAX_VISIBLE_ROWS && rows.length > 0 && ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: " (\u2191\u2193 navigate \u00B7 Enter select)" }) }))] }));
60
- }
61
- //# sourceMappingURL=InteractiveTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InteractiveTable.js","sourceRoot":"","sources":["../../../src/tui/components/InteractiveTable.tsx"],"names":[],"mappings":";;AAmBA,4CAsFC;;AAzGD,iCAAwC;AACxC,6BAA0C;AAgB1C,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,SAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,aAAa,EAAE,aAAa,GACN;IACtB,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,aAAa,IAAI,WAAW,CAAC;IAEnD,IAAA,cAAQ,EAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACvB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,IAAI,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,wBAAwB;IACxB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACpC,IAAI,GAAG,CAAC,KAAK;YAAE,OAAO,GAAG,CAAC,KAAK,CAAC;QAChC,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG;gBAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,QAA0B,MAAM,EAAU,EAAE;QACpF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,IAAI,KAAK,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxD,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,sBAAsB;IACtB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,IAAI,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QACnC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;QACzE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,CAAC,CAAC;IAEtE,SAAS;IACT,MAAM,UAAU,GAAG,OAAO;SACvB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;SACzD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAEpD,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,aAAE,GAAG,EAAE,UAAU,IAAQ,GAC7C,EACN,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,QAAQ,wBAAG,aAAa,IAAQ,GAClC,EACL,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;gBAC3B,MAAM,SAAS,GAAG,QAAQ,GAAG,EAAE,CAAC;gBAChC,MAAM,UAAU,GAAG,SAAS,KAAK,aAAa,CAAC;gBAC/C,MAAM,IAAI,GAAG,OAAO;qBACjB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;qBACjE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO,CACL,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,aACzD,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAG,IAAI,IACzB,IAHC,SAAS,CAIb,CACP,CAAC;YACJ,CAAC,CAAC,EACD,IAAI,CAAC,MAAM,GAAG,gBAAgB,IAAI,CACjC,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,QAAQ,mBAAE,GAAG,OAAG,IAAI,CAAC,MAAM,+DAA2C,GACxE,CACP,EACA,IAAI,CAAC,MAAM,IAAI,gBAAgB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CACrD,uBAAC,SAAG,cACF,uBAAC,UAAI,IAAC,QAAQ,mEAAqC,GAC/C,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StepSpinner = StepSpinner;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const ink_1 = require("ink");
7
- const SPINNER_FRAMES = ["◈", "◇", "◆", "◇"];
8
- const SPINNER_INTERVAL = 120;
9
- function StepSpinner({ step, total, label, status, detail, error, }) {
10
- const [frame, setFrame] = (0, react_1.useState)(0);
11
- (0, react_1.useEffect)(() => {
12
- if (status !== "running")
13
- return;
14
- const timer = setInterval(() => {
15
- setFrame((f) => (f + 1) % SPINNER_FRAMES.length);
16
- }, SPINNER_INTERVAL);
17
- return () => clearInterval(timer);
18
- }, [status]);
19
- const prefix = `Step ${step}/${total}`;
20
- if (status === "pending") {
21
- return ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { dimColor: true, children: [" ", prefix, " \u2014 ", label] }) }));
22
- }
23
- if (status === "running") {
24
- return ((0, jsx_runtime_1.jsx)(ink_1.Box, { flexDirection: "column", children: (0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "cyan", children: [" ", SPINNER_FRAMES[frame], " ", prefix, " \u2014 ", label, "..."] }) }) }));
25
- }
26
- if (status === "done") {
27
- return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "green", children: [" \u2713 ", prefix, " \u2014 ", label] }) }), detail && ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { dimColor: true, children: [" \u2514 ", detail] }) }))] }));
28
- }
29
- // error
30
- return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "red", children: [" \u2717 ", prefix, " \u2014 ", label] }) }), error && ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "red", children: [" \u2514 ", error] }) }))] }));
31
- }
32
- //# sourceMappingURL=StepSpinner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StepSpinner.js","sourceRoot":"","sources":["../../../src/tui/components/StepSpinner.tsx"],"names":[],"mappings":";;AAiBA,kCAkEC;;AAnFD,iCAAmD;AACnD,6BAAgC;AAEhC,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5C,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAa7B,SAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,KAAK,EACL,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,GACY;IACjB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAEtC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC,EAAE,gBAAgB,CAAC,CAAC;QACrB,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,MAAM,GAAG,QAAQ,IAAI,IAAI,KAAK,EAAE,CAAC;IAEvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CACL,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,QAAQ,yBAAI,MAAM,cAAK,KAAK,IAAQ,GACtC,CACP,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CACL,uBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,YACzB,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,KAAK,EAAC,MAAM,kBAAG,cAAc,CAAC,KAAK,CAAC,OAAG,MAAM,cAAK,KAAK,WAAW,GACpE,GACF,CACP,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,KAAK,EAAC,OAAO,yBAAK,MAAM,cAAK,KAAK,IAAQ,GAC5C,EACL,MAAM,IAAI,CACT,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,QAAQ,iCAAO,MAAM,IAAQ,GAC/B,CACP,IACG,CACP,CAAC;IACJ,CAAC;IAED,QAAQ;IACR,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,KAAK,EAAC,KAAK,yBAAK,MAAM,cAAK,KAAK,IAAQ,GAC1C,EACL,KAAK,IAAI,CACR,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,KAAK,EAAC,KAAK,2BAAO,KAAK,IAAQ,GACjC,CACP,IACG,CACP,CAAC;AACJ,CAAC"}