reasonix 0.33.2 → 0.34.1
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 +1 -21
- package/dashboard/dist/app.js.map +1 -1
- package/dist/cli/{chat-ZMSAXE77.js → chat-TD6GR3QK.js} +14 -13
- package/dist/cli/chunk-2EBODRRO.js +149 -0
- package/dist/cli/chunk-2EBODRRO.js.map +1 -0
- package/dist/cli/{chunk-DULSP7JH.js → chunk-5JXXEPDM.js} +34 -1
- package/dist/cli/chunk-5JXXEPDM.js.map +1 -0
- package/dist/cli/{chunk-OW7IHE6M.js → chunk-EINEIIIW.js} +693 -364
- package/dist/cli/chunk-EINEIIIW.js.map +1 -0
- package/dist/cli/{chunk-WVJL7ZO2.js → chunk-F3ILWP2L.js} +4 -4
- package/dist/cli/{chunk-SDE5U32Z.js → chunk-KZHMKOJH.js} +13 -8
- package/dist/cli/{chunk-SDE5U32Z.js.map → chunk-KZHMKOJH.js.map} +1 -1
- package/dist/cli/{chunk-G7M3QWEN.js → chunk-LNTORE5K.js} +225 -132
- package/dist/cli/chunk-LNTORE5K.js.map +1 -0
- package/dist/cli/chunk-MRLXEMZ7.js +26 -0
- package/dist/cli/chunk-MRLXEMZ7.js.map +1 -0
- package/dist/cli/{chunk-WBDE4IRI.js → chunk-OERAGRJX.js} +2 -2
- package/dist/cli/{chunk-QGE6AF76.js → chunk-Q36KBLSU.js} +207 -8
- package/dist/cli/chunk-Q36KBLSU.js.map +1 -0
- package/dist/cli/{chunk-RZILUXUC.js → chunk-RXGEGA7K.js} +2 -2
- package/dist/cli/{chunk-FXGQ5NHE.js → chunk-SA4UGZPG.js} +21 -1
- package/dist/cli/chunk-SA4UGZPG.js.map +1 -0
- package/dist/cli/{chunk-J5VLP23S.js → chunk-SW3CCXEV.js} +2 -2
- package/dist/cli/{chunk-W4LDFAZ6.js → chunk-SX6L4HZZ.js} +2 -2
- package/dist/cli/chunk-WUI3P4RA.js +319 -0
- package/dist/cli/chunk-WUI3P4RA.js.map +1 -0
- package/dist/cli/{code-R4TXQQEE.js → code-TGUOQBRJ.js} +15 -14
- package/dist/cli/{code-R4TXQQEE.js.map → code-TGUOQBRJ.js.map} +1 -1
- package/dist/cli/{commands-JWT2MWVH.js → commands-MEZPSEHV.js} +4 -3
- package/dist/cli/{commands-JWT2MWVH.js.map → commands-MEZPSEHV.js.map} +1 -1
- package/dist/cli/{commit-RPZBOZS2.js → commit-CE4EFTUQ.js} +3 -2
- package/dist/cli/{commit-RPZBOZS2.js.map → commit-CE4EFTUQ.js.map} +1 -1
- package/dist/cli/{doctor-V5HLCMSQ.js → doctor-YASM64X6.js} +7 -6
- package/dist/cli/index.js +22 -21
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/{mcp-ARTNQ24O.js → mcp-LDFK5QJI.js} +3 -2
- package/dist/cli/{mcp-ARTNQ24O.js.map → mcp-LDFK5QJI.js.map} +1 -1
- package/dist/cli/{mcp-browse-HLO2ENDL.js → mcp-browse-FYHEITCM.js} +3 -2
- package/dist/cli/{mcp-browse-HLO2ENDL.js.map → mcp-browse-FYHEITCM.js.map} +1 -1
- package/dist/cli/{replay-Q43DSMG6.js → replay-JEDLU7F2.js} +8 -6
- package/dist/cli/{replay-Q43DSMG6.js.map → replay-JEDLU7F2.js.map} +1 -1
- package/dist/cli/{run-HK3FP266.js → run-NHD2RSTD.js} +7 -6
- package/dist/cli/{run-HK3FP266.js.map → run-NHD2RSTD.js.map} +1 -1
- package/dist/cli/{server-SYC3OVOP.js → server-MC4A4WAJ.js} +9 -8
- package/dist/cli/{server-SYC3OVOP.js.map → server-MC4A4WAJ.js.map} +1 -1
- package/dist/cli/{sessions-3XU2GGHX.js → sessions-ZHWJEW4L.js} +7 -6
- package/dist/cli/{sessions-3XU2GGHX.js.map → sessions-ZHWJEW4L.js.map} +1 -1
- package/dist/cli/{setup-CCJZAWTY.js → setup-DK43MT47.js} +6 -5
- package/dist/cli/{setup-CCJZAWTY.js.map → setup-DK43MT47.js.map} +1 -1
- package/dist/cli/{version-5SGI2SEE.js → version-O362UKPM.js} +7 -6
- package/dist/cli/{version-5SGI2SEE.js.map → version-O362UKPM.js.map} +1 -1
- package/dist/index.d.ts +45 -1
- package/dist/index.js +569 -27
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/chunk-63KAV5DX.js +0 -106
- package/dist/cli/chunk-63KAV5DX.js.map +0 -1
- package/dist/cli/chunk-DULSP7JH.js.map +0 -1
- package/dist/cli/chunk-FXGQ5NHE.js.map +0 -1
- package/dist/cli/chunk-G7M3QWEN.js.map +0 -1
- package/dist/cli/chunk-OW7IHE6M.js.map +0 -1
- package/dist/cli/chunk-QGE6AF76.js.map +0 -1
- package/dist/cli/chunk-ZPTSJGX5.js +0 -88
- package/dist/cli/chunk-ZPTSJGX5.js.map +0 -1
- /package/dist/cli/{chat-ZMSAXE77.js.map → chat-TD6GR3QK.js.map} +0 -0
- /package/dist/cli/{chunk-WVJL7ZO2.js.map → chunk-F3ILWP2L.js.map} +0 -0
- /package/dist/cli/{chunk-WBDE4IRI.js.map → chunk-OERAGRJX.js.map} +0 -0
- /package/dist/cli/{chunk-RZILUXUC.js.map → chunk-RXGEGA7K.js.map} +0 -0
- /package/dist/cli/{chunk-J5VLP23S.js.map → chunk-SW3CCXEV.js.map} +0 -0
- /package/dist/cli/{chunk-W4LDFAZ6.js.map → chunk-SX6L4HZZ.js.map} +0 -0
- /package/dist/cli/{doctor-V5HLCMSQ.js.map → doctor-YASM64X6.js.map} +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/cli/ui/primitives.tsx
|
|
4
|
+
import { Text, useStdout } from "ink";
|
|
5
|
+
import React from "react";
|
|
6
|
+
function ChromeRule() {
|
|
7
|
+
const { stdout } = useStdout();
|
|
8
|
+
const cols = stdout?.columns ?? 80;
|
|
9
|
+
const w = Math.max(20, cols - 2);
|
|
10
|
+
return /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "\u2500".repeat(w));
|
|
11
|
+
}
|
|
12
|
+
function Bar({
|
|
13
|
+
ratio,
|
|
14
|
+
color,
|
|
15
|
+
cells = 14,
|
|
16
|
+
dim
|
|
17
|
+
}) {
|
|
18
|
+
const filled = Math.max(0, Math.min(cells, Math.round(ratio * cells)));
|
|
19
|
+
return /* @__PURE__ */ React.createElement(Text, null, /* @__PURE__ */ React.createElement(Text, { color, dimColor: dim }, "\u25B0".repeat(filled)), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "\u25B1".repeat(cells - filled)));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export {
|
|
23
|
+
ChromeRule,
|
|
24
|
+
Bar
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=chunk-MRLXEMZ7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cli/ui/primitives.tsx"],"sourcesContent":["import { Text, useStdout } from \"ink\";\n// biome-ignore lint/style/useImportType: tsconfig jsx=react needs React in value scope for JSX compilation\nimport React from \"react\";\nimport { COLOR } from \"./theme.js\";\n\n/**\n * Faint full-width horizontal rule. Width tracks the terminal columns\n * minus 2 cells so it lines up exactly under content rendered inside\n * a `paddingX={1}` parent — the standard chrome layout. Used by the\n * top chrome bar, the replay StatsPanel, and the bottom ctx footer.\n */\nexport function ChromeRule(): React.ReactElement {\n const { stdout } = useStdout();\n const cols = stdout?.columns ?? 80;\n const w = Math.max(20, cols - 2);\n return <Text dimColor>{\"─\".repeat(w)}</Text>;\n}\n\n/** Compact binary-K formatter — `1234 → \"1.2K\"`, `131072 → \"128K\"`. */\nexport function formatTokens(n: number): string {\n if (n < 1024) return String(n);\n const k = n / 1024;\n return k >= 100 ? `${k.toFixed(0)}K` : `${k.toFixed(1)}K`;\n}\n\n/**\n * Filled / empty progress bar. `▰▱` glyphs have distinct shapes so the\n * boundary stays visible even when the terminal collapses to 8-color slots.\n */\nexport function Bar({\n ratio,\n color,\n cells = 14,\n dim,\n}: {\n ratio: number;\n color: string;\n cells?: number;\n dim?: boolean;\n}): React.ReactElement {\n const filled = Math.max(0, Math.min(cells, Math.round(ratio * cells)));\n return (\n <Text>\n <Text color={color} dimColor={dim}>\n {\"▰\".repeat(filled)}\n </Text>\n <Text dimColor>{\"▱\".repeat(cells - filled)}</Text>\n </Text>\n );\n}\n\n/**\n * `▣ ctx ▰▰▱▱… 14K/128K (11%)` — the canonical context-pressure cell.\n * Used by the persistent footer (chat) and StatsPanel (replay). Color\n * thresholds match the `/compact` warning policy in the loop:\n * green <60% · amber 60-80% · red ≥80% (with `· /compact` hint).\n */\nexport function ContextCell({\n ratio,\n promptTokens,\n ctxMax,\n showBar,\n}: {\n ratio: number;\n promptTokens: number;\n ctxMax: number;\n showBar?: boolean;\n}): React.ReactElement {\n if (promptTokens === 0) {\n return (\n <Text>\n <Text color={COLOR.info} dimColor>\n {\"▣ ctx \"}\n </Text>\n <Text dimColor>— (no turns yet)</Text>\n </Text>\n );\n }\n const color = ratio >= 0.8 ? COLOR.err : ratio >= 0.6 ? COLOR.warn : COLOR.ok;\n const pct = Math.round(ratio * 100);\n return (\n <Text>\n <Text color={COLOR.info}>{\"▣ ctx \"}</Text>\n <Bar ratio={ratio} color={color} cells={showBar ? 14 : 10} />\n <Text> </Text>\n <Text color={color} bold>\n {formatTokens(promptTokens)}/{formatTokens(ctxMax)}\n </Text>\n <Text dimColor> ({pct}%)</Text>\n {ratio >= 0.8 ? (\n <Text color={COLOR.err} bold>\n {\" · /compact\"}\n </Text>\n ) : null}\n </Text>\n );\n}\n"],"mappings":";;;AAAA,SAAS,MAAM,iBAAiB;AAEhC,OAAO,WAAW;AASX,SAAS,aAAiC;AAC/C,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,QAAM,OAAO,QAAQ,WAAW;AAChC,QAAM,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC;AAC/B,SAAO,oCAAC,QAAK,UAAQ,QAAE,SAAI,OAAO,CAAC,CAAE;AACvC;AAaO,SAAS,IAAI;AAAA,EAClB;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AACF,GAKuB;AACrB,QAAM,SAAS,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,KAAK,MAAM,QAAQ,KAAK,CAAC,CAAC;AACrE,SACE,oCAAC,YACC,oCAAC,QAAK,OAAc,UAAU,OAC3B,SAAI,OAAO,MAAM,CACpB,GACA,oCAAC,QAAK,UAAQ,QAAE,SAAI,OAAO,QAAQ,MAAM,CAAE,CAC7C;AAEJ;","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
t
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-Q36KBLSU.js";
|
|
5
5
|
|
|
6
6
|
// src/hooks.ts
|
|
7
7
|
import { spawn } from "child_process";
|
|
@@ -205,4 +205,4 @@ export {
|
|
|
205
205
|
formatHookOutcomeMessage,
|
|
206
206
|
runHooks
|
|
207
207
|
};
|
|
208
|
-
//# sourceMappingURL=chunk-
|
|
208
|
+
//# sourceMappingURL=chunk-OERAGRJX.js.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
loadLanguage,
|
|
4
4
|
saveLanguage
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-5JXXEPDM.js";
|
|
6
6
|
|
|
7
7
|
// src/i18n/EN.ts
|
|
8
8
|
var EN = {
|
|
@@ -58,7 +58,100 @@ var EN = {
|
|
|
58
58
|
ephemeralSession: "\u25B8 ephemeral chat (no session persistence) \u2014 drop --no-session to enable",
|
|
59
59
|
restoredEdits: "\u25B8 restored {count} pending edit block(s) from an interrupted prior run \u2014 /apply to commit or /discard to drop.",
|
|
60
60
|
resumedPlan: "Resumed plan \xB7 {when}{summary}",
|
|
61
|
-
tipEditBindings:
|
|
61
|
+
tipEditBindings: {
|
|
62
|
+
topic: "edit-gate keybindings",
|
|
63
|
+
sections: [
|
|
64
|
+
{
|
|
65
|
+
rows: [
|
|
66
|
+
{ key: "y / n", text: "accept or drop pending edits" },
|
|
67
|
+
{
|
|
68
|
+
key: "Shift+Tab",
|
|
69
|
+
text: "switch review \u2194 AUTO (persisted; AUTO applies instantly)"
|
|
70
|
+
},
|
|
71
|
+
{ key: "u", text: "undo the last auto-applied batch (within the 5s banner)" }
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
footer: "Current mode shown in the bottom status bar \xB7 /keys for the full reference"
|
|
76
|
+
},
|
|
77
|
+
tipMouseClipboard: {
|
|
78
|
+
topic: "mouse + clipboard",
|
|
79
|
+
sections: [
|
|
80
|
+
{
|
|
81
|
+
rows: [
|
|
82
|
+
{ key: "wheel", text: "scrolls the chat history above" },
|
|
83
|
+
{
|
|
84
|
+
key: "right-click",
|
|
85
|
+
text: "captured by the app \u2014 use Ctrl+V (Win/Linux) or Cmd+V (macOS) to paste"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
key: "Shift + drag",
|
|
89
|
+
text: "selects text natively (Option on iTerm2, Shift on Win Term / Alacritty / WezTerm)"
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
footer: "Run /keys for the full keyboard + mouse reference"
|
|
95
|
+
},
|
|
96
|
+
keysReference: {
|
|
97
|
+
topic: "Reasonix keys + mouse reference",
|
|
98
|
+
sections: [
|
|
99
|
+
{
|
|
100
|
+
title: "keyboard",
|
|
101
|
+
rows: [
|
|
102
|
+
{ key: "Enter", text: "submit the prompt" },
|
|
103
|
+
{ key: "Shift+Enter", text: "insert a newline in the prompt" },
|
|
104
|
+
{ key: "Ctrl+P / Ctrl+N", text: "recall previous / next prompt from history" },
|
|
105
|
+
{ key: "Ctrl+A / Ctrl+E", text: "jump to start / end of the current line" },
|
|
106
|
+
{ key: "Ctrl+W", text: "delete the word before the cursor" },
|
|
107
|
+
{ key: "Ctrl+U", text: "clear the entire prompt buffer" },
|
|
108
|
+
{ key: "Tab", text: "complete @-mention \xB7 drill folder \xB7 accept slash command" },
|
|
109
|
+
{ key: "Shift+Tab", text: "edit-gate: toggle review \u2194 AUTO mode" },
|
|
110
|
+
{ key: "Esc", text: "dismiss picker \xB7 abort the running model turn" },
|
|
111
|
+
{ key: "Ctrl+C", text: "abort the running model turn (NOT copy \u2014 see clipboard)" },
|
|
112
|
+
{
|
|
113
|
+
key: "\u2191 / \u2193",
|
|
114
|
+
text: "scroll chat history (PromptInput cursor when buffer non-empty)"
|
|
115
|
+
},
|
|
116
|
+
{ key: "PgUp / PgDn", text: "scroll chat history a page at a time" },
|
|
117
|
+
{ key: "End", text: "jump chat to the most recent line" }
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
title: "mouse",
|
|
122
|
+
rows: [
|
|
123
|
+
{ key: "wheel", text: "scrolls the chat history" },
|
|
124
|
+
{ key: "right-click", text: "captured by the app \u2014 use Ctrl+V / Cmd+V to paste" },
|
|
125
|
+
{ key: "left-click", text: "captured (no action yet \u2014 reserved for future use)" }
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
title: "copy / paste",
|
|
130
|
+
rows: [
|
|
131
|
+
{ key: "select text", text: "hold Shift while dragging (Option on iTerm2)" },
|
|
132
|
+
{
|
|
133
|
+
key: "copy",
|
|
134
|
+
text: "Ctrl+Shift+C (Win/Linux) \xB7 Cmd+C (macOS) \u2014 terminal-native after selection"
|
|
135
|
+
},
|
|
136
|
+
{ key: "paste", text: "Ctrl+V or Ctrl+Shift+V (Win/Linux) \xB7 Cmd+V (macOS)" },
|
|
137
|
+
{
|
|
138
|
+
key: "bracketed paste",
|
|
139
|
+
text: "multi-line pastes stay one block \u2014 no auto-submit on intermediate newlines"
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
title: "edit-gate (code mode)",
|
|
145
|
+
rows: [
|
|
146
|
+
{ key: "y / n", text: "accept or drop pending edits in the review modal" },
|
|
147
|
+
{ key: "Shift+Tab", text: "toggle review \u2194 AUTO (persisted across sessions)" },
|
|
148
|
+
{ key: "u", text: "undo the last auto-applied batch (within the 5s banner)" }
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
footer: "Mouse tracking is on so the wheel scrolls chat instead of moving the cursor \u2014 that's why right-click no longer does the terminal's native paste."
|
|
153
|
+
},
|
|
154
|
+
tipShownOnce: "shown once",
|
|
62
155
|
modelOverride: "override the default model",
|
|
63
156
|
noSession: "disable session persistence for this run",
|
|
64
157
|
resumeHint: "force-resume the named session (even if idle)",
|
|
@@ -183,7 +276,7 @@ var EN = {
|
|
|
183
276
|
description: "shrink oversized tool results AND tool-call args (edit_file search/replace) in the log; cap in tokens, default 4000",
|
|
184
277
|
argsHint: "[tokens]"
|
|
185
278
|
},
|
|
186
|
-
keys: { description: "
|
|
279
|
+
keys: { description: "keyboard + mouse + copy/paste reference" },
|
|
187
280
|
plans: { description: "list this session's active + archived plans, newest first" },
|
|
188
281
|
replay: {
|
|
189
282
|
description: "load an archived plan as a read-only Time Travel snapshot (default: newest)",
|
|
@@ -412,7 +505,8 @@ var EN = {
|
|
|
412
505
|
loopStopped: "\u25B8 loop stopped.",
|
|
413
506
|
loopNoActive: "no active loop to stop.",
|
|
414
507
|
loopNoActiveHint: "no active loop. Start one with `/loop <interval> <prompt>` (e.g. /loop 30s npm test).\nCancels on: /loop stop \xB7 Esc \xB7 /clear /new \xB7 any user-typed prompt.",
|
|
415
|
-
loopStarted: '\u25B8 loop started \u2014 re-submitting "{prompt}" every {duration}. Type anything (or /loop stop) to cancel.'
|
|
508
|
+
loopStarted: '\u25B8 loop started \u2014 re-submitting "{prompt}" every {duration}. Type anything (or /loop stop) to cancel.',
|
|
509
|
+
keysNeedsTui: "/keys needs a TUI context (postKeys wired)."
|
|
416
510
|
},
|
|
417
511
|
admin: {
|
|
418
512
|
doctorNeedsTui: "/doctor needs a TUI context (postDoctor wired).",
|
|
@@ -751,7 +845,94 @@ var zhCN = {
|
|
|
751
845
|
ephemeralSession: "\u25B8 \u4E34\u65F6\u804A\u5929 (\u4E0D\u4FDD\u5B58\u4F1A\u8BDD) \u2014 \u53BB\u6389 --no-session \u4EE5\u542F\u7528\u4FDD\u5B58",
|
|
752
846
|
restoredEdits: "\u25B8 \u4ECE\u4E2D\u65AD\u7684\u8FD0\u884C\u4E2D\u6062\u590D\u4E86 {count} \u4E2A\u5F85\u5904\u7406\u7684\u7F16\u8F91\u5757 \u2014 /apply \u63D0\u4EA4\u6216 /discard \u653E\u5F03\u3002",
|
|
753
847
|
resumedPlan: "\u5DF2\u6062\u590D\u8BA1\u5212 \xB7 {when}{summary}",
|
|
754
|
-
tipEditBindings:
|
|
848
|
+
tipEditBindings: {
|
|
849
|
+
topic: "\u7F16\u8F91\u95E8\u63A7\u5FEB\u6377\u952E",
|
|
850
|
+
sections: [
|
|
851
|
+
{
|
|
852
|
+
rows: [
|
|
853
|
+
{ key: "y / n", text: "\u63A5\u53D7\u6216\u653E\u5F03\u5F85\u5904\u7406\u7684\u7F16\u8F91" },
|
|
854
|
+
{ key: "Shift+Tab", text: "\u5207\u6362 \u9884\u89C8 \u2194 \u81EA\u52A8\uFF08\u6301\u4E45\u5316\uFF1B\u81EA\u52A8\u6A21\u5F0F\u7ACB\u5373\u5E94\u7528\uFF09" },
|
|
855
|
+
{ key: "u", text: "\u64A4\u9500\u4E0A\u6B21\u81EA\u52A8\u5E94\u7528\u7684\u6279\u5904\u7406\uFF085 \u79D2\u6A2A\u5E45\u5185\uFF09" }
|
|
856
|
+
]
|
|
857
|
+
}
|
|
858
|
+
],
|
|
859
|
+
footer: "\u5F53\u524D\u6A21\u5F0F\u663E\u793A\u5728\u5E95\u90E8\u72B6\u6001\u680F \xB7 /keys \u67E5\u770B\u5B8C\u6574\u5FEB\u6377\u952E\u53C2\u8003"
|
|
860
|
+
},
|
|
861
|
+
tipMouseClipboard: {
|
|
862
|
+
topic: "\u9F20\u6807 + \u526A\u8D34\u677F",
|
|
863
|
+
sections: [
|
|
864
|
+
{
|
|
865
|
+
rows: [
|
|
866
|
+
{ key: "\u6EDA\u8F6E", text: "\u6EDA\u52A8\u4E0A\u65B9\u7684\u804A\u5929\u8BB0\u5F55" },
|
|
867
|
+
{
|
|
868
|
+
key: "\u53F3\u952E",
|
|
869
|
+
text: "\u5DF2\u88AB\u5E94\u7528\u63A5\u7BA1 \u2014 \u7528 Ctrl+V\uFF08Win/Linux\uFF09\u6216 Cmd+V\uFF08macOS\uFF09\u7C98\u8D34"
|
|
870
|
+
},
|
|
871
|
+
{
|
|
872
|
+
key: "Shift + \u62D6\u52A8",
|
|
873
|
+
text: "\u539F\u751F\u9009\u4E2D\u6587\u672C\uFF08iTerm2 \u7528 Option\uFF0CWin Term / Alacritty / WezTerm \u7528 Shift\uFF09"
|
|
874
|
+
}
|
|
875
|
+
]
|
|
876
|
+
}
|
|
877
|
+
],
|
|
878
|
+
footer: "\u8FD0\u884C /keys \u67E5\u770B\u5B8C\u6574\u952E\u76D8 + \u9F20\u6807\u53C2\u8003"
|
|
879
|
+
},
|
|
880
|
+
keysReference: {
|
|
881
|
+
topic: "Reasonix \u952E\u76D8 + \u9F20\u6807\u53C2\u8003",
|
|
882
|
+
sections: [
|
|
883
|
+
{
|
|
884
|
+
title: "\u952E\u76D8",
|
|
885
|
+
rows: [
|
|
886
|
+
{ key: "Enter", text: "\u63D0\u4EA4\u8F93\u5165" },
|
|
887
|
+
{ key: "Shift+Enter", text: "\u5728\u8F93\u5165\u6846\u4E2D\u63D2\u5165\u6362\u884C" },
|
|
888
|
+
{ key: "Ctrl+P / Ctrl+N", text: "\u8C03\u51FA\u4E0A\u4E00\u6761 / \u4E0B\u4E00\u6761\u5386\u53F2\u63D0\u793A" },
|
|
889
|
+
{ key: "Ctrl+A / Ctrl+E", text: "\u8DF3\u5230\u5F53\u524D\u884C\u7684\u5F00\u5934 / \u7ED3\u5C3E" },
|
|
890
|
+
{ key: "Ctrl+W", text: "\u5220\u9664\u5149\u6807\u524D\u7684\u4E00\u4E2A\u8BCD" },
|
|
891
|
+
{ key: "Ctrl+U", text: "\u6E05\u7A7A\u6574\u4E2A\u8F93\u5165\u7F13\u51B2\u533A" },
|
|
892
|
+
{ key: "Tab", text: "\u8865\u5168 @-mention \xB7 \u8FDB\u5165\u6587\u4EF6\u5939 \xB7 \u63A5\u53D7 slash \u547D\u4EE4" },
|
|
893
|
+
{ key: "Shift+Tab", text: "\u7F16\u8F91\u95E8\u63A7\uFF1A\u5207\u6362 \u9884\u89C8 \u2194 \u81EA\u52A8 \u6A21\u5F0F" },
|
|
894
|
+
{ key: "Esc", text: "\u5173\u95ED\u5F39\u51FA\u9009\u62E9\u5668 \xB7 \u4E2D\u6B62\u5F53\u524D\u6A21\u578B\u56DE\u5408" },
|
|
895
|
+
{ key: "Ctrl+C", text: "\u4E2D\u6B62\u5F53\u524D\u6A21\u578B\u56DE\u5408\uFF08\u4E0D\u662F\u590D\u5236 \u2014 \u89C1\u526A\u8D34\u677F\u6BB5\uFF09" },
|
|
896
|
+
{ key: "\u2191 / \u2193", text: "\u6EDA\u52A8\u804A\u5929\u8BB0\u5F55\uFF08\u7F13\u51B2\u533A\u975E\u7A7A\u65F6\u4E3A\u5149\u6807\u79FB\u52A8\uFF09" },
|
|
897
|
+
{ key: "PgUp / PgDn", text: "\u6574\u9875\u6EDA\u52A8\u804A\u5929\u8BB0\u5F55" },
|
|
898
|
+
{ key: "End", text: "\u8DF3\u5230\u804A\u5929\u7684\u6700\u65B0\u4E00\u884C" }
|
|
899
|
+
]
|
|
900
|
+
},
|
|
901
|
+
{
|
|
902
|
+
title: "\u9F20\u6807",
|
|
903
|
+
rows: [
|
|
904
|
+
{ key: "\u6EDA\u8F6E", text: "\u6EDA\u52A8\u804A\u5929\u8BB0\u5F55" },
|
|
905
|
+
{ key: "\u53F3\u952E", text: "\u88AB\u5E94\u7528\u63A5\u7BA1 \u2014 \u7528 Ctrl+V / Cmd+V \u7C98\u8D34" },
|
|
906
|
+
{ key: "\u5DE6\u952E", text: "\u88AB\u63A5\u7BA1\uFF08\u6682\u65E0\u52A8\u4F5C \u2014 \u9884\u7559\u7ED9\u540E\u7EED\u529F\u80FD\uFF09" }
|
|
907
|
+
]
|
|
908
|
+
},
|
|
909
|
+
{
|
|
910
|
+
title: "\u590D\u5236 / \u7C98\u8D34",
|
|
911
|
+
rows: [
|
|
912
|
+
{ key: "\u9009\u4E2D\u6587\u5B57", text: "\u62D6\u52A8\u65F6\u6309\u4F4F Shift\uFF08iTerm2 \u7528 Option\uFF09" },
|
|
913
|
+
{
|
|
914
|
+
key: "\u590D\u5236",
|
|
915
|
+
text: "Ctrl+Shift+C\uFF08Win/Linux\uFF09\xB7 Cmd+C\uFF08macOS\uFF09\u2014 \u9009\u4E2D\u540E\u7531\u7EC8\u7AEF\u539F\u751F\u5904\u7406"
|
|
916
|
+
},
|
|
917
|
+
{ key: "\u7C98\u8D34", text: "Ctrl+V \u6216 Ctrl+Shift+V\uFF08Win/Linux\uFF09\xB7 Cmd+V\uFF08macOS\uFF09" },
|
|
918
|
+
{
|
|
919
|
+
key: "bracketed paste",
|
|
920
|
+
text: "\u591A\u884C\u7C98\u8D34\u6574\u4F53\u8FDB\u5165 \u2014 \u4E2D\u95F4\u6362\u884C\u4E0D\u4F1A\u89E6\u53D1\u63D0\u4EA4"
|
|
921
|
+
}
|
|
922
|
+
]
|
|
923
|
+
},
|
|
924
|
+
{
|
|
925
|
+
title: "\u7F16\u8F91\u95E8\u63A7\uFF08\u4EC5 code \u6A21\u5F0F\uFF09",
|
|
926
|
+
rows: [
|
|
927
|
+
{ key: "y / n", text: "\u5728\u9884\u89C8\u6A21\u6001\u4E2D\u63A5\u53D7\u6216\u653E\u5F03\u5F85\u5904\u7406\u7684\u7F16\u8F91" },
|
|
928
|
+
{ key: "Shift+Tab", text: "\u5207\u6362 \u9884\u89C8 \u2194 \u81EA\u52A8\uFF08\u6301\u4E45\u5316\uFF09" },
|
|
929
|
+
{ key: "u", text: "\u64A4\u9500\u4E0A\u6B21\u81EA\u52A8\u5E94\u7528\u7684\u6279\u5904\u7406\uFF085 \u79D2\u6A2A\u5E45\u5185\uFF09" }
|
|
930
|
+
]
|
|
931
|
+
}
|
|
932
|
+
],
|
|
933
|
+
footer: "\u9F20\u6807\u8FFD\u8E2A\u5DF2\u5F00\u542F\uFF0C\u6EDA\u8F6E\u7528\u6765\u6EDA\u52A8\u804A\u5929\u800C\u4E0D\u662F\u79FB\u52A8\u5149\u6807 \u2014 \u8FD9\u4E5F\u662F\u53F3\u952E\u4E0D\u518D\u89E6\u53D1\u7EC8\u7AEF\u539F\u751F\u7C98\u8D34\u7684\u539F\u56E0\u3002"
|
|
934
|
+
},
|
|
935
|
+
tipShownOnce: "\u4EC5\u663E\u793A\u4E00\u6B21",
|
|
755
936
|
modelOverride: "\u8986\u76D6\u9ED8\u8BA4\u6A21\u578B",
|
|
756
937
|
noSession: "\u7981\u7528\u672C\u6B21\u8FD0\u884C\u7684\u4F1A\u8BDD\u6301\u4E45\u5316",
|
|
757
938
|
resumeHint: "\u5F3A\u5236\u6062\u590D\u6307\u5B9A\u4F1A\u8BDD\uFF08\u5373\u4F7F\u7A7A\u95F2\uFF09",
|
|
@@ -878,7 +1059,7 @@ var zhCN = {
|
|
|
878
1059
|
description: "\u7F29\u5C0F\u65E5\u5FD7\u4E2D\u8FC7\u5927\u7684\u5DE5\u5177\u7ED3\u679C\u548C\u5DE5\u5177\u8C03\u7528\u53C2\u6570\uFF1B\u4E0A\u9650\u4E3A tokens\uFF0C\u9ED8\u8BA4 4000",
|
|
879
1060
|
argsHint: "[tokens]"
|
|
880
1061
|
},
|
|
881
|
-
keys: { description: "\
|
|
1062
|
+
keys: { description: "\u952E\u76D8 + \u9F20\u6807 + \u590D\u5236\u7C98\u8D34\u53C2\u8003" },
|
|
882
1063
|
plans: { description: "\u5217\u51FA\u6B64\u4F1A\u8BDD\u7684\u6D3B\u8DC3 + \u5F52\u6863\u8BA1\u5212\uFF08\u6700\u65B0\u5728\u524D\uFF09" },
|
|
883
1064
|
replay: {
|
|
884
1065
|
description: "\u52A0\u8F7D\u5F52\u6863\u8BA1\u5212\u4E3A\u53EA\u8BFB\u7684\u65F6\u95F4\u65C5\u884C\u5FEB\u7167\uFF08\u9ED8\u8BA4\uFF1A\u6700\u65B0\uFF09",
|
|
@@ -1109,7 +1290,8 @@ var zhCN = {
|
|
|
1109
1290
|
loopStopped: "\u25B8 \u5FAA\u73AF\u5DF2\u505C\u6B62\u3002",
|
|
1110
1291
|
loopNoActive: "\u6CA1\u6709\u6D3B\u52A8\u7684\u5FAA\u73AF\u53EF\u505C\u6B62\u3002",
|
|
1111
1292
|
loopNoActiveHint: "\u6CA1\u6709\u6D3B\u52A8\u7684\u5FAA\u73AF\u3002\u4F7F\u7528 `/loop <interval> <prompt>` \u542F\u52A8\u4E00\u4E2A\uFF08\u4F8B\u5982 /loop 30s npm test\uFF09\u3002\n\u53D6\u6D88\u65B9\u5F0F\uFF1A/loop stop \xB7 Esc \xB7 /clear /new \xB7 \u4EFB\u4F55\u7528\u6237\u8F93\u5165\u7684\u63D0\u793A\u3002",
|
|
1112
|
-
loopStarted: '\u25B8 \u5FAA\u73AF\u5DF2\u542F\u52A8 \u2014 \u6BCF {duration} \u91CD\u65B0\u63D0\u4EA4 "{prompt}"\u3002\u8F93\u5165\u4EFB\u4F55\u5185\u5BB9\uFF08\u6216 /loop stop\uFF09\u53D6\u6D88\u3002'
|
|
1293
|
+
loopStarted: '\u25B8 \u5FAA\u73AF\u5DF2\u542F\u52A8 \u2014 \u6BCF {duration} \u91CD\u65B0\u63D0\u4EA4 "{prompt}"\u3002\u8F93\u5165\u4EFB\u4F55\u5185\u5BB9\uFF08\u6216 /loop stop\uFF09\u53D6\u6D88\u3002',
|
|
1294
|
+
keysNeedsTui: "/keys \u9700\u8981 TUI \u4E0A\u4E0B\u6587\uFF08postKeys \u5DF2\u8FDE\u63A5\uFF09\u3002"
|
|
1113
1295
|
},
|
|
1114
1296
|
admin: {
|
|
1115
1297
|
doctorNeedsTui: "/doctor \u9700\u8981 TUI \u4E0A\u4E0B\u6587\uFF08postDoctor \u5DF2\u8FDE\u63A5\uFF09\u3002",
|
|
@@ -1428,6 +1610,22 @@ function getLanguage() {
|
|
|
1428
1610
|
function getSupportedLanguages() {
|
|
1429
1611
|
return Object.keys(translations);
|
|
1430
1612
|
}
|
|
1613
|
+
function tObj(path) {
|
|
1614
|
+
const parts = path.split(".");
|
|
1615
|
+
let val = translations[currentLang] || translations.EN;
|
|
1616
|
+
for (const part of parts) {
|
|
1617
|
+
val = val?.[part];
|
|
1618
|
+
if (val === void 0) break;
|
|
1619
|
+
}
|
|
1620
|
+
if (val === void 0 && currentLang !== "EN") {
|
|
1621
|
+
val = translations.EN;
|
|
1622
|
+
for (const part of parts) {
|
|
1623
|
+
val = val?.[part];
|
|
1624
|
+
if (val === void 0) break;
|
|
1625
|
+
}
|
|
1626
|
+
}
|
|
1627
|
+
return val;
|
|
1628
|
+
}
|
|
1431
1629
|
function t(path, params) {
|
|
1432
1630
|
const parts = path.split(".");
|
|
1433
1631
|
let val = translations[currentLang] || translations.EN;
|
|
@@ -1462,6 +1660,7 @@ export {
|
|
|
1462
1660
|
setLanguage,
|
|
1463
1661
|
getLanguage,
|
|
1464
1662
|
getSupportedLanguages,
|
|
1663
|
+
tObj,
|
|
1465
1664
|
t
|
|
1466
1665
|
};
|
|
1467
|
-
//# sourceMappingURL=chunk-
|
|
1666
|
+
//# sourceMappingURL=chunk-Q36KBLSU.js.map
|