reasonix 0.23.0 → 0.24.0
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/dashboard/dist/app.js +1723 -574
- package/dashboard/dist/app.js.map +1 -1
- package/dist/cli/.-3G6VX5S7.js +327 -0
- package/dist/cli/.-6YRPB2C7.js +329 -0
- package/dist/cli/.-6YRPB2C7.js.map +1 -0
- package/dist/cli/.-EYSVINK3.js +317 -0
- package/dist/cli/.-EYSVINK3.js.map +1 -0
- package/dist/cli/banner-demo-QKOPDSTL.js +77 -0
- package/dist/cli/banner-demo-QKOPDSTL.js.map +1 -0
- package/dist/cli/card-demo-5TVXJISK.js +944 -0
- package/dist/cli/card-demo-5TVXJISK.js.map +1 -0
- package/dist/cli/chunk-2H7UOFLK.js +11 -0
- package/dist/cli/chunk-2H7UOFLK.js.map +1 -0
- package/dist/cli/chunk-BGTXZKNY.js +197 -0
- package/dist/cli/chunk-BGTXZKNY.js.map +1 -0
- package/dist/cli/chunk-JHXQDL7B.js +2056 -0
- package/dist/cli/chunk-JHXQDL7B.js.map +1 -0
- package/dist/cli/flicker-demo-MOB6GAW4.js +165 -0
- package/dist/cli/flicker-demo-MOB6GAW4.js.map +1 -0
- package/dist/cli/index.js +3818 -2021
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/preview-4FOEEE5G.js +224 -0
- package/dist/cli/preview-4FOEEE5G.js.map +1 -0
- package/dist/cli/{prompt-YUL7CYKY.js → prompt-VZQ2CPID.js} +2 -1
- package/dist/cli/prompt-VZQ2CPID.js.map +1 -0
- package/dist/cli/renderer-demo-2BIGEV2T.js +95 -0
- package/dist/cli/renderer-demo-2BIGEV2T.js.map +1 -0
- package/dist/cli/select-demo-OA5N34BJ.js +107 -0
- package/dist/cli/select-demo-OA5N34BJ.js.map +1 -0
- package/dist/cli/stress-demo-I7XRPQMM.js +211 -0
- package/dist/cli/stress-demo-I7XRPQMM.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +79 -15
- package/dist/index.js.map +1 -1
- package/package.json +6 -4
- /package/dist/cli/{prompt-YUL7CYKY.js.map → .-3G6VX5S7.js.map} +0 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
AT_MENTION_PATTERN,
|
|
4
|
+
AT_PICKER_PREFIX,
|
|
5
|
+
AppendOnlyLog,
|
|
6
|
+
CacheFirstLoop,
|
|
7
|
+
ChoiceRequestedError,
|
|
8
|
+
DEFAULT_AT_MENTION_MAX_BYTES,
|
|
9
|
+
DEFAULT_MAX_RESULT_CHARS,
|
|
10
|
+
DEFAULT_MAX_RESULT_TOKENS,
|
|
11
|
+
DEFAULT_PICKER_IGNORE_DIRS,
|
|
12
|
+
DeepSeekClient,
|
|
13
|
+
HOOK_EVENTS,
|
|
14
|
+
HOOK_SETTINGS_DIRNAME,
|
|
15
|
+
HOOK_SETTINGS_FILENAME,
|
|
16
|
+
ImmutablePrefix,
|
|
17
|
+
LATEST_CACHE_TTL_MS,
|
|
18
|
+
LATEST_FETCH_TIMEOUT_MS,
|
|
19
|
+
MCP_PROTOCOL_VERSION,
|
|
20
|
+
McpClient,
|
|
21
|
+
NeedsConfirmationError,
|
|
22
|
+
PlanCheckpointError,
|
|
23
|
+
PlanProposedError,
|
|
24
|
+
PlanRevisionProposedError,
|
|
25
|
+
SessionStats,
|
|
26
|
+
SseTransport,
|
|
27
|
+
StdioTransport,
|
|
28
|
+
StormBreaker,
|
|
29
|
+
StreamableHttpTransport,
|
|
30
|
+
ToolCallRepair,
|
|
31
|
+
ToolRegistry,
|
|
32
|
+
Usage,
|
|
33
|
+
VERSION,
|
|
34
|
+
VolatileScratch,
|
|
35
|
+
aggregateBranchUsage,
|
|
36
|
+
aggregateUsage,
|
|
37
|
+
analyzeSchema,
|
|
38
|
+
appendSessionMessage,
|
|
39
|
+
appendUsage,
|
|
40
|
+
applyEditBlock,
|
|
41
|
+
applyEditBlocks,
|
|
42
|
+
bridgeMcpTools,
|
|
43
|
+
bucketCacheHitRatio,
|
|
44
|
+
bucketSavingsFraction,
|
|
45
|
+
claudeEquivalentCost,
|
|
46
|
+
compareVersions,
|
|
47
|
+
computeReplayStats,
|
|
48
|
+
costUsd,
|
|
49
|
+
decideOutcome,
|
|
50
|
+
defaultSelector,
|
|
51
|
+
defaultUsageLogPath,
|
|
52
|
+
deleteSession,
|
|
53
|
+
detectAtPicker,
|
|
54
|
+
detectShellOperator,
|
|
55
|
+
diffTranscripts,
|
|
56
|
+
emptyPlanState,
|
|
57
|
+
expandAtMentions,
|
|
58
|
+
fetchWithRetry,
|
|
59
|
+
fixToolCallPairing,
|
|
60
|
+
flattenMcpResult,
|
|
61
|
+
flattenSchema,
|
|
62
|
+
forkRegistryExcluding,
|
|
63
|
+
formatCommandResult,
|
|
64
|
+
formatHookOutcomeMessage,
|
|
65
|
+
formatLogSize,
|
|
66
|
+
formatLoopError,
|
|
67
|
+
formatSearchResults,
|
|
68
|
+
getLatestVersion,
|
|
69
|
+
globalSettingsPath,
|
|
70
|
+
harvest,
|
|
71
|
+
healLoadedMessages,
|
|
72
|
+
healLoadedMessagesByTokens,
|
|
73
|
+
htmlToText,
|
|
74
|
+
injectPowerShellUtf8,
|
|
75
|
+
inputCostUsd,
|
|
76
|
+
inspectMcpServer,
|
|
77
|
+
isAllowed,
|
|
78
|
+
isJsonRpcError,
|
|
79
|
+
isNpxInstall,
|
|
80
|
+
isPlanStateEmpty,
|
|
81
|
+
listFilesSync,
|
|
82
|
+
listFilesWithStatsAsync,
|
|
83
|
+
listFilesWithStatsSync,
|
|
84
|
+
listSessions,
|
|
85
|
+
loadDotenv,
|
|
86
|
+
loadHooks,
|
|
87
|
+
loadSessionMessages,
|
|
88
|
+
matchesTool,
|
|
89
|
+
nestArguments,
|
|
90
|
+
openTranscriptFile,
|
|
91
|
+
outputCostUsd,
|
|
92
|
+
parseEditBlocks,
|
|
93
|
+
parseMcpSpec,
|
|
94
|
+
parseMojeekResults,
|
|
95
|
+
parseTranscript,
|
|
96
|
+
prepareSpawn,
|
|
97
|
+
projectSettingsPath,
|
|
98
|
+
quoteForCmdExe,
|
|
99
|
+
rankPickerCandidates,
|
|
100
|
+
readTranscript,
|
|
101
|
+
readUsageLog,
|
|
102
|
+
recordFromLoopEvent,
|
|
103
|
+
registerChoiceTool,
|
|
104
|
+
registerFilesystemTools,
|
|
105
|
+
registerMemoryTools,
|
|
106
|
+
registerPlanTool,
|
|
107
|
+
registerShellTools,
|
|
108
|
+
registerSubagentTool,
|
|
109
|
+
registerWebTools,
|
|
110
|
+
renderMarkdown,
|
|
111
|
+
renderSummaryTable,
|
|
112
|
+
repairTruncatedJson,
|
|
113
|
+
replayFromFile,
|
|
114
|
+
resolveExecutable,
|
|
115
|
+
restoreSnapshots,
|
|
116
|
+
runBranches,
|
|
117
|
+
runCommand,
|
|
118
|
+
runHooks,
|
|
119
|
+
sanitizeName,
|
|
120
|
+
scavengeToolCalls,
|
|
121
|
+
sessionPath,
|
|
122
|
+
sessionsDir,
|
|
123
|
+
similarity,
|
|
124
|
+
snapshotBeforeEdits,
|
|
125
|
+
stripHallucinatedToolMarkup,
|
|
126
|
+
tokenizeCommand,
|
|
127
|
+
truncateForModel,
|
|
128
|
+
truncateForModelByTokens,
|
|
129
|
+
webFetch,
|
|
130
|
+
webSearch,
|
|
131
|
+
withUtf8Codepage,
|
|
132
|
+
writeMeta,
|
|
133
|
+
writeRecord
|
|
134
|
+
} from "./chunk-UNTSNL5C.js";
|
|
135
|
+
import {
|
|
136
|
+
defaultConfigPath,
|
|
137
|
+
isPlausibleKey,
|
|
138
|
+
loadApiKey,
|
|
139
|
+
readConfig,
|
|
140
|
+
redactKey,
|
|
141
|
+
saveApiKey,
|
|
142
|
+
writeConfig
|
|
143
|
+
} from "./chunk-2NBVKF4L.js";
|
|
144
|
+
import {
|
|
145
|
+
CODE_SYSTEM_PROMPT,
|
|
146
|
+
MEMORY_INDEX_FILE,
|
|
147
|
+
MEMORY_INDEX_MAX_CHARS,
|
|
148
|
+
MemoryStore,
|
|
149
|
+
PROJECT_MEMORY_FILE,
|
|
150
|
+
PROJECT_MEMORY_MAX_CHARS,
|
|
151
|
+
USER_MEMORY_DIR,
|
|
152
|
+
applyMemoryStack,
|
|
153
|
+
applyProjectMemory,
|
|
154
|
+
applyUserMemory,
|
|
155
|
+
codeSystemPrompt,
|
|
156
|
+
memoryEnabled,
|
|
157
|
+
projectHash,
|
|
158
|
+
readProjectMemory,
|
|
159
|
+
sanitizeMemoryName
|
|
160
|
+
} from "./chunk-PJGGEIK3.js";
|
|
161
|
+
import "./chunk-2H7UOFLK.js";
|
|
162
|
+
export {
|
|
163
|
+
AT_MENTION_PATTERN,
|
|
164
|
+
AT_PICKER_PREFIX,
|
|
165
|
+
AppendOnlyLog,
|
|
166
|
+
CODE_SYSTEM_PROMPT,
|
|
167
|
+
CacheFirstLoop,
|
|
168
|
+
ChoiceRequestedError,
|
|
169
|
+
DEFAULT_AT_MENTION_MAX_BYTES,
|
|
170
|
+
DEFAULT_MAX_RESULT_CHARS,
|
|
171
|
+
DEFAULT_MAX_RESULT_TOKENS,
|
|
172
|
+
DEFAULT_PICKER_IGNORE_DIRS,
|
|
173
|
+
DeepSeekClient,
|
|
174
|
+
HOOK_EVENTS,
|
|
175
|
+
HOOK_SETTINGS_DIRNAME,
|
|
176
|
+
HOOK_SETTINGS_FILENAME,
|
|
177
|
+
ImmutablePrefix,
|
|
178
|
+
LATEST_CACHE_TTL_MS,
|
|
179
|
+
LATEST_FETCH_TIMEOUT_MS,
|
|
180
|
+
MCP_PROTOCOL_VERSION,
|
|
181
|
+
MEMORY_INDEX_FILE,
|
|
182
|
+
MEMORY_INDEX_MAX_CHARS,
|
|
183
|
+
McpClient,
|
|
184
|
+
MemoryStore,
|
|
185
|
+
NeedsConfirmationError,
|
|
186
|
+
PROJECT_MEMORY_FILE,
|
|
187
|
+
PROJECT_MEMORY_MAX_CHARS,
|
|
188
|
+
PlanCheckpointError,
|
|
189
|
+
PlanProposedError,
|
|
190
|
+
PlanRevisionProposedError,
|
|
191
|
+
SessionStats,
|
|
192
|
+
SseTransport,
|
|
193
|
+
StdioTransport,
|
|
194
|
+
StormBreaker,
|
|
195
|
+
StreamableHttpTransport,
|
|
196
|
+
ToolCallRepair,
|
|
197
|
+
ToolRegistry,
|
|
198
|
+
USER_MEMORY_DIR,
|
|
199
|
+
Usage,
|
|
200
|
+
VERSION,
|
|
201
|
+
VolatileScratch,
|
|
202
|
+
aggregateBranchUsage,
|
|
203
|
+
aggregateUsage,
|
|
204
|
+
analyzeSchema,
|
|
205
|
+
appendSessionMessage,
|
|
206
|
+
appendUsage,
|
|
207
|
+
applyEditBlock,
|
|
208
|
+
applyEditBlocks,
|
|
209
|
+
applyMemoryStack,
|
|
210
|
+
applyProjectMemory,
|
|
211
|
+
applyUserMemory,
|
|
212
|
+
bridgeMcpTools,
|
|
213
|
+
bucketCacheHitRatio,
|
|
214
|
+
bucketSavingsFraction,
|
|
215
|
+
claudeEquivalentCost,
|
|
216
|
+
codeSystemPrompt,
|
|
217
|
+
compareVersions,
|
|
218
|
+
computeReplayStats,
|
|
219
|
+
costUsd,
|
|
220
|
+
decideOutcome,
|
|
221
|
+
defaultConfigPath,
|
|
222
|
+
defaultSelector,
|
|
223
|
+
defaultUsageLogPath,
|
|
224
|
+
deleteSession,
|
|
225
|
+
detectAtPicker,
|
|
226
|
+
detectShellOperator,
|
|
227
|
+
diffTranscripts,
|
|
228
|
+
emptyPlanState,
|
|
229
|
+
expandAtMentions,
|
|
230
|
+
fetchWithRetry,
|
|
231
|
+
fixToolCallPairing,
|
|
232
|
+
flattenMcpResult,
|
|
233
|
+
flattenSchema,
|
|
234
|
+
forkRegistryExcluding,
|
|
235
|
+
formatCommandResult,
|
|
236
|
+
formatHookOutcomeMessage,
|
|
237
|
+
formatLogSize,
|
|
238
|
+
formatLoopError,
|
|
239
|
+
formatSearchResults,
|
|
240
|
+
getLatestVersion,
|
|
241
|
+
globalSettingsPath,
|
|
242
|
+
harvest,
|
|
243
|
+
healLoadedMessages,
|
|
244
|
+
healLoadedMessagesByTokens,
|
|
245
|
+
htmlToText,
|
|
246
|
+
injectPowerShellUtf8,
|
|
247
|
+
inputCostUsd,
|
|
248
|
+
inspectMcpServer,
|
|
249
|
+
isAllowed,
|
|
250
|
+
isJsonRpcError,
|
|
251
|
+
isNpxInstall,
|
|
252
|
+
isPlanStateEmpty,
|
|
253
|
+
isPlausibleKey,
|
|
254
|
+
listFilesSync,
|
|
255
|
+
listFilesWithStatsAsync,
|
|
256
|
+
listFilesWithStatsSync,
|
|
257
|
+
listSessions,
|
|
258
|
+
loadApiKey,
|
|
259
|
+
loadDotenv,
|
|
260
|
+
loadHooks,
|
|
261
|
+
loadSessionMessages,
|
|
262
|
+
matchesTool,
|
|
263
|
+
memoryEnabled,
|
|
264
|
+
nestArguments,
|
|
265
|
+
openTranscriptFile,
|
|
266
|
+
outputCostUsd,
|
|
267
|
+
parseEditBlocks,
|
|
268
|
+
parseMcpSpec,
|
|
269
|
+
parseMojeekResults,
|
|
270
|
+
parseTranscript,
|
|
271
|
+
prepareSpawn,
|
|
272
|
+
projectHash,
|
|
273
|
+
projectSettingsPath,
|
|
274
|
+
quoteForCmdExe,
|
|
275
|
+
rankPickerCandidates,
|
|
276
|
+
readConfig,
|
|
277
|
+
readProjectMemory,
|
|
278
|
+
readTranscript,
|
|
279
|
+
readUsageLog,
|
|
280
|
+
recordFromLoopEvent,
|
|
281
|
+
redactKey,
|
|
282
|
+
registerChoiceTool,
|
|
283
|
+
registerFilesystemTools,
|
|
284
|
+
registerMemoryTools,
|
|
285
|
+
registerPlanTool,
|
|
286
|
+
registerShellTools,
|
|
287
|
+
registerSubagentTool,
|
|
288
|
+
registerWebTools,
|
|
289
|
+
renderMarkdown as renderDiffMarkdown,
|
|
290
|
+
renderSummaryTable as renderDiffSummary,
|
|
291
|
+
repairTruncatedJson,
|
|
292
|
+
replayFromFile,
|
|
293
|
+
resolveExecutable,
|
|
294
|
+
restoreSnapshots,
|
|
295
|
+
runBranches,
|
|
296
|
+
runCommand,
|
|
297
|
+
runHooks,
|
|
298
|
+
sanitizeMemoryName,
|
|
299
|
+
sanitizeName as sanitizeSessionName,
|
|
300
|
+
saveApiKey,
|
|
301
|
+
scavengeToolCalls,
|
|
302
|
+
sessionPath,
|
|
303
|
+
sessionsDir,
|
|
304
|
+
similarity,
|
|
305
|
+
snapshotBeforeEdits,
|
|
306
|
+
stripHallucinatedToolMarkup,
|
|
307
|
+
tokenizeCommand,
|
|
308
|
+
truncateForModel,
|
|
309
|
+
truncateForModelByTokens,
|
|
310
|
+
webFetch,
|
|
311
|
+
webSearch,
|
|
312
|
+
withUtf8Codepage,
|
|
313
|
+
writeConfig,
|
|
314
|
+
writeMeta,
|
|
315
|
+
writeRecord
|
|
316
|
+
};
|
|
317
|
+
//# sourceMappingURL=.-EYSVINK3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
CharPool,
|
|
4
|
+
HyperlinkPool,
|
|
5
|
+
StylePool,
|
|
6
|
+
ink_compat_exports,
|
|
7
|
+
mount,
|
|
8
|
+
useKeystroke
|
|
9
|
+
} from "./chunk-JHXQDL7B.js";
|
|
10
|
+
import "./chunk-2H7UOFLK.js";
|
|
11
|
+
|
|
12
|
+
// src/cli/commands/banner-demo.tsx
|
|
13
|
+
import React from "react";
|
|
14
|
+
var BRAND = "#79c0ff";
|
|
15
|
+
var FAINT = "#6e7681";
|
|
16
|
+
var ACCENT = "#d2a8ff";
|
|
17
|
+
var BOX_INNER_WIDTH = 35;
|
|
18
|
+
var HINTS = ["/help", "/init", "/memory", "/cost"];
|
|
19
|
+
function centerInside(text, pad) {
|
|
20
|
+
if (text.length >= pad) return text;
|
|
21
|
+
const left = Math.floor((pad - text.length) / 2);
|
|
22
|
+
const right = pad - text.length - left;
|
|
23
|
+
return `${" ".repeat(left)}${text}${" ".repeat(right)}`;
|
|
24
|
+
}
|
|
25
|
+
function Banner({ onExit }) {
|
|
26
|
+
const { stdout } = ink_compat_exports.useStdout();
|
|
27
|
+
const cols = stdout.columns;
|
|
28
|
+
const boxWidth = BOX_INNER_WIDTH + 2;
|
|
29
|
+
const boxIndent = Math.max(2, Math.floor((cols - boxWidth) / 2));
|
|
30
|
+
const pad = " ".repeat(boxIndent);
|
|
31
|
+
const empty = `\u2551${" ".repeat(BOX_INNER_WIDTH)}\u2551`;
|
|
32
|
+
const row = (s) => `${pad}${s}`;
|
|
33
|
+
useKeystroke((k) => {
|
|
34
|
+
if (k.escape) onExit();
|
|
35
|
+
});
|
|
36
|
+
return /* @__PURE__ */ React.createElement(ink_compat_exports.Box, { flexDirection: "column", marginY: 1 }, /* @__PURE__ */ React.createElement(ink_compat_exports.Text, { color: BRAND }, row(`\u2554${"\u2550".repeat(BOX_INNER_WIDTH)}\u2557`)), /* @__PURE__ */ React.createElement(ink_compat_exports.Text, { color: BRAND }, row(empty)), /* @__PURE__ */ React.createElement(ink_compat_exports.Text, { color: BRAND, bold: true }, row(`\u2551${centerInside("\u25C8 REASONIX", BOX_INNER_WIDTH)}\u2551`)), /* @__PURE__ */ React.createElement(ink_compat_exports.Text, { color: BRAND }, row(empty)), /* @__PURE__ */ React.createElement(ink_compat_exports.Text, { color: BRAND }, row(`\u2551${centerInside("cell-diff renderer demo", BOX_INNER_WIDTH)}\u2551`)), /* @__PURE__ */ React.createElement(ink_compat_exports.Text, { color: BRAND }, row(`\u2551${centerInside("press ESC to exit", BOX_INNER_WIDTH)}\u2551`)), /* @__PURE__ */ React.createElement(ink_compat_exports.Text, { color: BRAND }, row(empty)), /* @__PURE__ */ React.createElement(ink_compat_exports.Text, { color: BRAND }, row(`\u255A${"\u2550".repeat(BOX_INNER_WIDTH)}\u255D`)), /* @__PURE__ */ React.createElement(ink_compat_exports.Box, { marginTop: 1, flexDirection: "row", justifyContent: "center" }, HINTS.map((cmd, i) => /* @__PURE__ */ React.createElement(React.Fragment, { key: cmd }, /* @__PURE__ */ React.createElement(ink_compat_exports.Text, { color: FAINT }, cmd), i < HINTS.length - 1 ? /* @__PURE__ */ React.createElement(ink_compat_exports.Text, { color: ACCENT }, " \xB7 ") : null))));
|
|
37
|
+
}
|
|
38
|
+
async function runBannerDemo(opts = {}) {
|
|
39
|
+
const stdout = opts.stdout ?? process.stdout;
|
|
40
|
+
const stdin = opts.stdin ?? process.stdin;
|
|
41
|
+
if (!stdin.isTTY || !stdout.isTTY) {
|
|
42
|
+
console.error("banner-demo requires an interactive TTY.");
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
const pools = {
|
|
46
|
+
char: new CharPool(),
|
|
47
|
+
style: new StylePool(),
|
|
48
|
+
hyperlink: new HyperlinkPool()
|
|
49
|
+
};
|
|
50
|
+
let resolveExit = () => {
|
|
51
|
+
};
|
|
52
|
+
const exited = new Promise((resolve) => {
|
|
53
|
+
resolveExit = resolve;
|
|
54
|
+
});
|
|
55
|
+
const handle = mount(/* @__PURE__ */ React.createElement(Banner, { onExit: () => resolveExit() }), {
|
|
56
|
+
viewportWidth: stdout.columns ?? 80,
|
|
57
|
+
viewportHeight: stdout.rows ?? 24,
|
|
58
|
+
pools,
|
|
59
|
+
write: (bytes) => stdout.write(bytes),
|
|
60
|
+
stdin
|
|
61
|
+
});
|
|
62
|
+
const onResize = () => {
|
|
63
|
+
handle.resize(stdout.columns ?? 80, stdout.rows ?? 24);
|
|
64
|
+
};
|
|
65
|
+
stdout.on("resize", onResize);
|
|
66
|
+
try {
|
|
67
|
+
await exited;
|
|
68
|
+
} finally {
|
|
69
|
+
stdout.off("resize", onResize);
|
|
70
|
+
handle.destroy();
|
|
71
|
+
stdin.pause();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export {
|
|
75
|
+
runBannerDemo
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=banner-demo-QKOPDSTL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/banner-demo.tsx"],"sourcesContent":["// biome-ignore lint/style/useImportType: tsconfig jsx=react needs React in value scope for JSX compilation\nimport React from \"react\";\nimport {\n CharPool,\n type Handle,\n HyperlinkPool,\n StylePool,\n inkCompat,\n mount,\n useKeystroke,\n} from \"../../renderer/index.js\";\n\nconst BRAND = \"#79c0ff\";\nconst FAINT = \"#6e7681\";\nconst ACCENT = \"#d2a8ff\";\nconst BOX_INNER_WIDTH = 35;\n\nconst HINTS = [\"/help\", \"/init\", \"/memory\", \"/cost\"] as const;\n\nfunction centerInside(text: string, pad: number): string {\n if (text.length >= pad) return text;\n const left = Math.floor((pad - text.length) / 2);\n const right = pad - text.length - left;\n return `${\" \".repeat(left)}${text}${\" \".repeat(right)}`;\n}\n\nfunction Banner({ onExit }: { onExit: () => void }): React.ReactElement {\n const { stdout } = inkCompat.useStdout();\n const cols = stdout.columns;\n const boxWidth = BOX_INNER_WIDTH + 2;\n const boxIndent = Math.max(2, Math.floor((cols - boxWidth) / 2));\n const pad = \" \".repeat(boxIndent);\n const empty = `║${\" \".repeat(BOX_INNER_WIDTH)}║`;\n const row = (s: string) => `${pad}${s}`;\n\n useKeystroke((k) => {\n if (k.escape) onExit();\n });\n\n return (\n <inkCompat.Box flexDirection=\"column\" marginY={1}>\n <inkCompat.Text color={BRAND}>{row(`╔${\"═\".repeat(BOX_INNER_WIDTH)}╗`)}</inkCompat.Text>\n <inkCompat.Text color={BRAND}>{row(empty)}</inkCompat.Text>\n <inkCompat.Text color={BRAND} bold>\n {row(`║${centerInside(\"◈ REASONIX\", BOX_INNER_WIDTH)}║`)}\n </inkCompat.Text>\n <inkCompat.Text color={BRAND}>{row(empty)}</inkCompat.Text>\n <inkCompat.Text color={BRAND}>\n {row(`║${centerInside(\"cell-diff renderer demo\", BOX_INNER_WIDTH)}║`)}\n </inkCompat.Text>\n <inkCompat.Text color={BRAND}>\n {row(`║${centerInside(\"press ESC to exit\", BOX_INNER_WIDTH)}║`)}\n </inkCompat.Text>\n <inkCompat.Text color={BRAND}>{row(empty)}</inkCompat.Text>\n <inkCompat.Text color={BRAND}>{row(`╚${\"═\".repeat(BOX_INNER_WIDTH)}╝`)}</inkCompat.Text>\n\n <inkCompat.Box marginTop={1} flexDirection=\"row\" justifyContent=\"center\">\n {HINTS.map((cmd, i) => (\n <React.Fragment key={cmd}>\n <inkCompat.Text color={FAINT}>{cmd}</inkCompat.Text>\n {i < HINTS.length - 1 ? (\n <inkCompat.Text color={ACCENT}>{\" · \"}</inkCompat.Text>\n ) : null}\n </React.Fragment>\n ))}\n </inkCompat.Box>\n </inkCompat.Box>\n );\n}\n\nexport interface BannerDemoOptions {\n readonly stdout?: NodeJS.WriteStream;\n readonly stdin?: NodeJS.ReadStream;\n}\n\nexport async function runBannerDemo(opts: BannerDemoOptions = {}): Promise<void> {\n const stdout = opts.stdout ?? process.stdout;\n const stdin = opts.stdin ?? process.stdin;\n\n if (!stdin.isTTY || !stdout.isTTY) {\n console.error(\"banner-demo requires an interactive TTY.\");\n process.exit(1);\n }\n\n const pools = {\n char: new CharPool(),\n style: new StylePool(),\n hyperlink: new HyperlinkPool(),\n };\n\n let resolveExit: () => void = () => {};\n const exited = new Promise<void>((resolve) => {\n resolveExit = resolve;\n });\n\n const handle: Handle = mount(<Banner onExit={() => resolveExit()} />, {\n viewportWidth: stdout.columns ?? 80,\n viewportHeight: stdout.rows ?? 24,\n pools,\n write: (bytes) => stdout.write(bytes),\n stdin,\n });\n\n const onResize = () => {\n handle.resize(stdout.columns ?? 80, stdout.rows ?? 24);\n };\n stdout.on(\"resize\", onResize);\n\n try {\n await exited;\n } finally {\n stdout.off(\"resize\", onResize);\n handle.destroy();\n stdin.pause();\n }\n}\n"],"mappings":"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","names":[]}
|