reasonix 0.23.1 → 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.
Files changed (36) hide show
  1. package/dashboard/dist/app.js +1723 -574
  2. package/dashboard/dist/app.js.map +1 -1
  3. package/dist/cli/.-3G6VX5S7.js +327 -0
  4. package/dist/cli/.-6YRPB2C7.js +329 -0
  5. package/dist/cli/.-6YRPB2C7.js.map +1 -0
  6. package/dist/cli/.-EYSVINK3.js +317 -0
  7. package/dist/cli/.-EYSVINK3.js.map +1 -0
  8. package/dist/cli/banner-demo-QKOPDSTL.js +77 -0
  9. package/dist/cli/banner-demo-QKOPDSTL.js.map +1 -0
  10. package/dist/cli/card-demo-5TVXJISK.js +944 -0
  11. package/dist/cli/card-demo-5TVXJISK.js.map +1 -0
  12. package/dist/cli/chunk-2H7UOFLK.js +11 -0
  13. package/dist/cli/chunk-2H7UOFLK.js.map +1 -0
  14. package/dist/cli/chunk-BGTXZKNY.js +197 -0
  15. package/dist/cli/chunk-BGTXZKNY.js.map +1 -0
  16. package/dist/cli/chunk-JHXQDL7B.js +2056 -0
  17. package/dist/cli/chunk-JHXQDL7B.js.map +1 -0
  18. package/dist/cli/flicker-demo-MOB6GAW4.js +165 -0
  19. package/dist/cli/flicker-demo-MOB6GAW4.js.map +1 -0
  20. package/dist/cli/index.js +3654 -2035
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/cli/preview-4FOEEE5G.js +224 -0
  23. package/dist/cli/preview-4FOEEE5G.js.map +1 -0
  24. package/dist/cli/{prompt-YUL7CYKY.js → prompt-VZQ2CPID.js} +2 -1
  25. package/dist/cli/prompt-VZQ2CPID.js.map +1 -0
  26. package/dist/cli/renderer-demo-2BIGEV2T.js +95 -0
  27. package/dist/cli/renderer-demo-2BIGEV2T.js.map +1 -0
  28. package/dist/cli/select-demo-OA5N34BJ.js +107 -0
  29. package/dist/cli/select-demo-OA5N34BJ.js.map +1 -0
  30. package/dist/cli/stress-demo-I7XRPQMM.js +211 -0
  31. package/dist/cli/stress-demo-I7XRPQMM.js.map +1 -0
  32. package/dist/index.d.ts +3 -2
  33. package/dist/index.js +22 -9
  34. package/dist/index.js.map +1 -1
  35. package/package.json +6 -4
  36. /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":[]}