b3-dict 0.1.1 → 0.2.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/README.md +2 -2
- package/dist/app.d.ts +11 -4
- package/dist/app.js +19 -7
- package/dist/app.js.map +1 -1
- package/dist/cli.js +23 -5
- package/dist/cli.js.map +1 -1
- package/dist/lib/config.d.ts +3 -1
- package/dist/lib/config.js +23 -10
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/messages.d.ts +29 -2
- package/dist/lib/messages.js +64 -3
- package/dist/lib/messages.js.map +1 -1
- package/dist/lib/model.d.ts +40 -2
- package/dist/lib/model.js +81 -4
- package/dist/lib/model.js.map +1 -1
- package/dist/lib/paths.d.ts +1 -0
- package/dist/lib/paths.js +2 -1
- package/dist/lib/paths.js.map +1 -1
- package/dist/lib/settings.d.ts +9 -0
- package/dist/lib/settings.js +29 -0
- package/dist/lib/settings.js.map +1 -0
- package/dist/screens/help.d.ts +4 -0
- package/dist/screens/help.js +12 -0
- package/dist/screens/help.js.map +1 -0
- package/dist/screens/home.d.ts +1 -1
- package/dist/screens/home.js +3 -3
- package/dist/screens/home.js.map +1 -1
- package/dist/screens/model-picker.d.ts +9 -0
- package/dist/screens/model-picker.js +20 -0
- package/dist/screens/model-picker.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -19,9 +19,9 @@ b3dict "take for granted" --fresh # skip the stored answer, ask again
|
|
|
19
19
|
b3dict "draggable" --json # raw answer envelope
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
Answers are stored in `data/b3-dict.db`, so asking the same thing twice costs nothing the second time. `.env` and `data/` live in this folder no matter where you run `b3dict` from. Installed from npm instead of a checkout, they move to `~/.local/share/b3-dict` (or `$XDG_DATA_HOME/b3-dict`); set `B3_DICT_HOME` to put them anywhere else.
|
|
22
|
+
Answers are stored in `data/b3-dict.db`, so asking the same thing twice costs nothing the second time. `.env` and `data/` live in this folder no matter where you run `b3dict` from. `settings.json` sits next to `.env` once you pick a model in the TUI. Installed from npm instead of a checkout, they move to `~/.local/share/b3-dict` (or `$XDG_DATA_HOME/b3-dict`); set `B3_DICT_HOME` to put them anywhere else.
|
|
23
23
|
|
|
24
|
-
In the interactive screen, paste works for multiline questions. Once an answer is up: `r` asks again, `s` saves it to the wordbook, `esc` goes back, `q` quits. Press `↓` from the question box to reach History (everything you've asked) and Wordbook (what you starred); `enter` reopens a stored answer without calling the model, `s` stars or unstars the row. From the empty question box, `esc` or `ctrl+c` quits.
|
|
24
|
+
In the interactive screen, paste works for multiline questions. Once an answer is up: `r` asks again, `s` saves it to the wordbook, `esc` goes back, `q` quits. Press `↓` from the question box to reach History (everything you've asked) and Wordbook (what you starred); `enter` reopens a stored answer without calling the model, `s` stars or unstars the row. The same menu has Model, where you pick which model answers (it's remembered next time, unless `B3_DICT_MODEL` is set), and Help, which lists the keys and where your files are. From the empty question box, `esc` or `ctrl+c` quits.
|
|
25
25
|
|
|
26
26
|
## Development
|
|
27
27
|
|
package/dist/app.d.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import { type LookupDeps } from './lib/lookup.js';
|
|
1
|
+
import { type Ask, type LookupDeps } from './lib/lookup.js';
|
|
2
|
+
import { type HelpPaths } from './lib/messages.js';
|
|
3
|
+
import type { Settings } from './lib/settings.js';
|
|
2
4
|
import type { Config, ConfigProblem, Result } from './lib/types.js';
|
|
5
|
+
export type Deps = Omit<LookupDeps, 'onRetry' | 'ask'> & {
|
|
6
|
+
askFor: (model: string) => Ask;
|
|
7
|
+
saveSettings: (settings: Settings) => Result<void>;
|
|
8
|
+
};
|
|
3
9
|
export type AppProps = {
|
|
4
10
|
config: Result<Config, ConfigProblem>;
|
|
5
|
-
|
|
6
|
-
|
|
11
|
+
paths: HelpPaths;
|
|
12
|
+
pinned?: string;
|
|
13
|
+
deps?: Deps;
|
|
7
14
|
};
|
|
8
|
-
export declare function App({ config,
|
|
15
|
+
export declare function App({ config, paths, pinned, deps }: AppProps): import("react").JSX.Element;
|
package/dist/app.js
CHANGED
|
@@ -7,8 +7,10 @@ import { parseStored } from './lib/envelope.js';
|
|
|
7
7
|
import { lookup } from './lib/lookup.js';
|
|
8
8
|
import { TUI } from './lib/messages.js';
|
|
9
9
|
import { init, intentFor, update } from './lib/model.js';
|
|
10
|
+
import { Help } from './screens/help.js';
|
|
10
11
|
import { Home } from './screens/home.js';
|
|
11
12
|
import { List } from './screens/list.js';
|
|
13
|
+
import { ModelPicker } from './screens/model-picker.js';
|
|
12
14
|
import { Setup } from './screens/setup.js';
|
|
13
15
|
// Reads a list for the screen. A notice rides along when the step before it went wrong.
|
|
14
16
|
function showList(deps, which, index, notice) {
|
|
@@ -34,6 +36,11 @@ function perform(intent, deps) {
|
|
|
34
36
|
? { type: 'entryOpened', entry: row.data, answer: answer.data, origin }
|
|
35
37
|
: { type: 'openFailed', query: row.data.query_text, detail: answer.error, origin };
|
|
36
38
|
}
|
|
39
|
+
case 'pickModel': {
|
|
40
|
+
// The pick holds for this session even when it can't be saved for the next one.
|
|
41
|
+
const saved = deps.saveSettings({ model: intent.model });
|
|
42
|
+
return { type: 'modelPicked', model: intent.model, ...(!saved.ok && { notice: TUI.settingsSaveFailed(saved.error) }) };
|
|
43
|
+
}
|
|
37
44
|
case 'toggleSave': {
|
|
38
45
|
const saved = setSaved(deps.db, intent.id, intent.saved, deps.now());
|
|
39
46
|
if (intent.reload) {
|
|
@@ -45,7 +52,7 @@ function perform(intent, deps) {
|
|
|
45
52
|
}
|
|
46
53
|
// The shell: one reducer holds the state, key presses become messages, and the side effects
|
|
47
54
|
// (asking the model, reading lists, flipping the saved flag) happen here.
|
|
48
|
-
export function App({ config,
|
|
55
|
+
export function App({ config, paths, pinned, deps }) {
|
|
49
56
|
const { exit } = useApp();
|
|
50
57
|
const [model, dispatch] = useReducer(update, config, init);
|
|
51
58
|
const { view } = model;
|
|
@@ -56,7 +63,10 @@ export function App({ config, envPath, deps }) {
|
|
|
56
63
|
if (intent.type === 'quit') {
|
|
57
64
|
exit();
|
|
58
65
|
}
|
|
59
|
-
else if (intent.type === 'openList' ||
|
|
66
|
+
else if (intent.type === 'openList' ||
|
|
67
|
+
intent.type === 'openEntry' ||
|
|
68
|
+
intent.type === 'toggleSave' ||
|
|
69
|
+
intent.type === 'pickModel') {
|
|
60
70
|
if (deps)
|
|
61
71
|
dispatch(perform(intent, deps));
|
|
62
72
|
}
|
|
@@ -64,20 +74,22 @@ export function App({ config, envPath, deps }) {
|
|
|
64
74
|
dispatch(intent);
|
|
65
75
|
}
|
|
66
76
|
});
|
|
77
|
+
// The config with the model picked in this session, if any.
|
|
78
|
+
const current = config.ok && model.active ? { ...config.data, model: model.active.model } : undefined;
|
|
67
79
|
const request = view.screen === 'asking' ? view.request : undefined;
|
|
68
80
|
useEffect(() => {
|
|
69
|
-
if (!request || !
|
|
81
|
+
if (!request || !current || !deps)
|
|
70
82
|
return;
|
|
71
83
|
const requestId = request.id;
|
|
72
|
-
void lookup({ query: request.query, route:
|
|
84
|
+
void lookup({ query: request.query, route: current.route, model: current.model, fresh: request.fresh }, { ...deps, ask: deps.askFor(current.model), onRetry: (event) => dispatch({ type: 'retrying', requestId, event }) }).then((result) => dispatch(result.ok
|
|
73
85
|
? { type: 'answered', requestId, outcome: result.data }
|
|
74
86
|
: { type: 'failed', requestId, failure: result.error }));
|
|
75
|
-
// One lookup per request id. The request object is recreated on every render,
|
|
76
|
-
//
|
|
87
|
+
// One lookup per request id. The request object is recreated on every render, deps never
|
|
88
|
+
// change after mount, and the model can only change on Home, before a request exists.
|
|
77
89
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
78
90
|
}, [request?.id]);
|
|
79
91
|
// One COUNT per Home render; renders happen on key presses, so this is cheap.
|
|
80
92
|
const counted = view.screen === 'home' && deps ? countLookups(deps.db) : undefined;
|
|
81
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Banner, { config:
|
|
93
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Banner, { config: current }), view.screen === 'setup' && _jsx(Setup, { problem: view.problem, envPath: paths.env }), view.screen === 'list' && deps && _jsx(List, { view: view, now: deps.now() }), view.screen === 'model' && _jsx(ModelPicker, { view: view, pinned: pinned }), view.screen === 'help' && _jsx(Help, { paths: paths }), view.screen !== 'setup' && view.screen !== 'list' && view.screen !== 'model' && view.screen !== 'help' && current && (_jsx(Home, { view: view, config: current, counts: counted?.ok ? counted.data : undefined, notice: counted && !counted.ok ? TUI.countFailed(counted.error) : undefined }))] }));
|
|
82
94
|
}
|
|
83
95
|
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -8,8 +8,9 @@ import { resolveConfig } from './lib/config.js';
|
|
|
8
8
|
import { openDb } from './lib/db.js';
|
|
9
9
|
import { lookup } from './lib/lookup.js';
|
|
10
10
|
import { CLI, configProblemText, failureText, HELP, retryText, TUI } from './lib/messages.js';
|
|
11
|
-
import { DB_PATH, ENV_PATH, PACKAGE_JSON_PATH } from './lib/paths.js';
|
|
11
|
+
import { DB_PATH, ENV_PATH, PACKAGE_JSON_PATH, SETTINGS_PATH } from './lib/paths.js';
|
|
12
12
|
import { renderText } from './lib/render-text.js';
|
|
13
|
+
import { readSettings, writeSettings } from './lib/settings.js';
|
|
13
14
|
import { EXIT, messageOf } from './lib/types.js';
|
|
14
15
|
const out = (text) => process.stdout.write(`${text}\n`);
|
|
15
16
|
const warn = (text) => process.stderr.write(`${text}\n`);
|
|
@@ -37,9 +38,15 @@ async function main(argv) {
|
|
|
37
38
|
// Variables already in the environment win over .env.
|
|
38
39
|
if (existsSync(ENV_PATH))
|
|
39
40
|
process.loadEnvFile(ENV_PATH);
|
|
41
|
+
// The model picked in the TUI. A file that can't be read is reported once and then ignored;
|
|
42
|
+
// the next pick overwrites it.
|
|
43
|
+
const settings = readSettings(SETTINGS_PATH);
|
|
44
|
+
if (!settings.ok)
|
|
45
|
+
warn(CLI.settingsIgnored(SETTINGS_PATH, settings.error));
|
|
46
|
+
const saved = settings.ok ? settings.data.model : undefined;
|
|
40
47
|
return command.data.mode === 'tui'
|
|
41
|
-
? runTui(resolveConfig(process.env))
|
|
42
|
-
: runOneShot(command.data, resolveConfig(process.env, command.data.model));
|
|
48
|
+
? runTui(resolveConfig(process.env, undefined, saved))
|
|
49
|
+
: runOneShot(command.data, resolveConfig(process.env, command.data.model, saved));
|
|
43
50
|
}
|
|
44
51
|
async function runOneShot({ query, fresh, json, model }, config) {
|
|
45
52
|
if (!config.ok) {
|
|
@@ -79,8 +86,19 @@ async function runTui(config) {
|
|
|
79
86
|
}
|
|
80
87
|
// Loaded here so a one-shot lookup never pays for Ink and React.
|
|
81
88
|
const [{ render }, { createElement }, { App }] = await Promise.all([import('ink'), import('react'), import('./app.js')]);
|
|
82
|
-
const deps = config.ok && db?.ok
|
|
83
|
-
|
|
89
|
+
const deps = config.ok && db?.ok
|
|
90
|
+
? {
|
|
91
|
+
...depsFor(config.data, db.data),
|
|
92
|
+
askFor: (model) => createAsk({ ...config.data, model }),
|
|
93
|
+
saveSettings: (settings) => writeSettings(SETTINGS_PATH, settings),
|
|
94
|
+
}
|
|
95
|
+
: undefined;
|
|
96
|
+
const app = render(createElement(App, {
|
|
97
|
+
config,
|
|
98
|
+
paths: { env: ENV_PATH, settings: SETTINGS_PATH, db: DB_PATH },
|
|
99
|
+
pinned: process.env.B3_DICT_MODEL?.trim() || undefined,
|
|
100
|
+
deps,
|
|
101
|
+
}));
|
|
84
102
|
await app.waitUntilExit();
|
|
85
103
|
if (db?.ok)
|
|
86
104
|
db.data.close();
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAW,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAmB,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { type Config, type ConfigProblem, type Result, type Route } from './types.js';
|
|
2
2
|
export declare const DEFAULT_MODEL: Record<Route, string>;
|
|
3
|
+
export declare const MODEL_CHOICES: Record<Route, readonly string[]>;
|
|
3
4
|
type Env = Record<string, string | undefined>;
|
|
4
|
-
export declare function
|
|
5
|
+
export declare function checkModel(route: Route, id: string): Result<string, ConfigProblem>;
|
|
6
|
+
export declare function resolveConfig(env: Env, modelFlag?: string, saved?: string): Result<Config, ConfigProblem>;
|
|
5
7
|
export declare const keyVarFor: (route: Route) => string;
|
|
6
8
|
export {};
|
package/dist/lib/config.js
CHANGED
|
@@ -3,14 +3,30 @@ export const DEFAULT_MODEL = {
|
|
|
3
3
|
openrouter: 'qwen/qwen3-235b-a22b-2507',
|
|
4
4
|
openai: 'gpt-5-mini',
|
|
5
5
|
};
|
|
6
|
+
// What the TUI's model picker offers, default first. Every one has answered a real lookup.
|
|
7
|
+
export const MODEL_CHOICES = {
|
|
8
|
+
openrouter: [DEFAULT_MODEL.openrouter, 'qwen/qwen3-30b-a3b-instruct-2507', 'z-ai/glm-4.6', 'openai/gpt-5-mini'],
|
|
9
|
+
openai: [DEFAULT_MODEL.openai],
|
|
10
|
+
};
|
|
6
11
|
const KEY_VAR = {
|
|
7
12
|
openrouter: 'OPENROUTER_API_KEY',
|
|
8
13
|
openai: 'OPENAI_API_KEY',
|
|
9
14
|
};
|
|
10
15
|
const read = (env, name) => env[name]?.trim() || undefined;
|
|
11
16
|
const isRoute = (value) => ROUTES.includes(value);
|
|
12
|
-
//
|
|
13
|
-
|
|
17
|
+
// A model id as the route will serve it. A slash id is an OpenRouter id; a bare name resolves on
|
|
18
|
+
// whichever route is active, so on OpenRouter it means OpenAI's model of that name.
|
|
19
|
+
export function checkModel(route, id) {
|
|
20
|
+
const model = id.trim();
|
|
21
|
+
if (model.includes('/')) {
|
|
22
|
+
return route === 'openrouter' ? ok(model) : err({ code: 'model-needs-openrouter', model });
|
|
23
|
+
}
|
|
24
|
+
return ok(route === 'openrouter' ? `openai/${model}` : model);
|
|
25
|
+
}
|
|
26
|
+
// Which model wins: the one-shot --model, then B3_DICT_MODEL, then the model picked in the TUI
|
|
27
|
+
// (saved), then the route's default. A saved model the route can't serve is skipped, not an error:
|
|
28
|
+
// the user didn't ask for it on this run.
|
|
29
|
+
export function resolveConfig(env, modelFlag, saved) {
|
|
14
30
|
const keys = {
|
|
15
31
|
openrouter: read(env, KEY_VAR.openrouter),
|
|
16
32
|
openai: read(env, KEY_VAR.openai),
|
|
@@ -25,15 +41,12 @@ export function resolveConfig(env, modelFlag) {
|
|
|
25
41
|
if (!apiKey)
|
|
26
42
|
return err({ code: 'route-key-missing', route });
|
|
27
43
|
const requested = modelFlag?.trim() || read(env, 'B3_DICT_MODEL');
|
|
28
|
-
if (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (requested.includes('/')) {
|
|
32
|
-
if (route !== 'openrouter')
|
|
33
|
-
return err({ code: 'model-needs-openrouter', model: requested });
|
|
34
|
-
return ok({ route, apiKey, model: requested });
|
|
44
|
+
if (requested) {
|
|
45
|
+
const model = checkModel(route, requested);
|
|
46
|
+
return model.ok ? ok({ route, apiKey, model: model.data }) : model;
|
|
35
47
|
}
|
|
36
|
-
|
|
48
|
+
const remembered = saved?.trim() ? checkModel(route, saved) : undefined;
|
|
49
|
+
return ok({ route, apiKey, model: remembered?.ok ? remembered.data : DEFAULT_MODEL[route] });
|
|
37
50
|
}
|
|
38
51
|
export const keyVarFor = (route) => KEY_VAR[route];
|
|
39
52
|
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAA4D,MAAM,YAAY,CAAC;AAEvG,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,UAAU,EAAE,2BAA2B;IACvC,MAAM,EAAE,YAAY;CACrB,CAAC;AAEF,MAAM,OAAO,GAA0B;IACrC,UAAU,EAAE,oBAAoB;IAChC,MAAM,EAAE,gBAAgB;CACzB,CAAC;AAIF,MAAM,IAAI,GAAG,CAAC,GAAQ,EAAE,IAAY,EAAsB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AAE5F,MAAM,OAAO,GAAG,CAAC,KAAa,EAAkB,EAAE,CAAE,MAA4B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEjG,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/messages.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export declare const CLI: {
|
|
|
10
10
|
readonly missingModel: "--model cần một tên model. Ví dụ: --model z-ai/glm-4.6";
|
|
11
11
|
readonly dbOpenFailed: (path: string, detail: string) => string;
|
|
12
12
|
readonly unknownError: (detail: string) => string;
|
|
13
|
+
readonly settingsIgnored: (path: string, detail: string) => string;
|
|
13
14
|
};
|
|
14
15
|
export declare const backTo: (origin?: Origin) => string;
|
|
15
16
|
export declare const TUI: {
|
|
@@ -19,13 +20,15 @@ export declare const TUI: {
|
|
|
19
20
|
readonly homeHeading: "Home";
|
|
20
21
|
readonly countFailed: (detail: string) => string;
|
|
21
22
|
readonly homeInstruction: "Hỏi về từ, thành ngữ, cách dùng. Trộn tiếng Việt và English đều được.";
|
|
22
|
-
readonly homeHintsEmpty: "gõ câu hỏi rồi enter · ↓
|
|
23
|
-
readonly homeHints: "enter hỏi · ↓
|
|
23
|
+
readonly homeHintsEmpty: "gõ câu hỏi rồi enter · ↓ menu · esc thoát";
|
|
24
|
+
readonly homeHints: "enter hỏi · ↓ menu · esc xoá ô · ctrl+c thoát";
|
|
24
25
|
readonly homeMenuHints: "↑↓ chọn · enter mở · esc về ô gõ · q thoát";
|
|
25
26
|
readonly homeMenuTitle: "── hoặc chọn: ──";
|
|
26
27
|
readonly menuLabel: {
|
|
27
28
|
readonly history: "History ";
|
|
28
29
|
readonly wordbook: "Wordbook";
|
|
30
|
+
readonly model: "Model ";
|
|
31
|
+
readonly help: "Help ";
|
|
29
32
|
};
|
|
30
33
|
readonly listHeading: {
|
|
31
34
|
readonly history: "History";
|
|
@@ -55,9 +58,33 @@ export declare const TUI: {
|
|
|
55
58
|
readonly saveFailed: (detail: string) => string;
|
|
56
59
|
readonly failedHints: (backTo: string) => string;
|
|
57
60
|
readonly setupHints: "esc thoát";
|
|
61
|
+
readonly modelHeading: "Model";
|
|
62
|
+
readonly modelInstruction: "Model trả lời các câu hỏi sau. Đáp án đã lưu vẫn dùng lại; r để hỏi lại bằng model mới.";
|
|
63
|
+
readonly modelDefault: "mặc định";
|
|
64
|
+
readonly modelNotes: Record<string, string>;
|
|
65
|
+
readonly modelInUse: "✓ đang dùng";
|
|
66
|
+
readonly customRow: "Khác: gõ id model…";
|
|
67
|
+
readonly customExample: "Id trên OpenRouter, ví dụ z-ai/glm-4.6. Tên trần như gpt-5-nano là model của OpenAI.";
|
|
68
|
+
readonly customRejected: (model: string) => string;
|
|
69
|
+
readonly pinned: (model: string) => string;
|
|
70
|
+
readonly pickerHints: "↑↓ chọn · enter dùng · esc về home · q thoát";
|
|
71
|
+
readonly customHints: "enter dùng · esc huỷ";
|
|
72
|
+
readonly settingsSaveFailed: (detail: string) => string;
|
|
73
|
+
readonly helpHeading: "Help";
|
|
74
|
+
readonly helpHints: "esc về home · q thoát";
|
|
58
75
|
readonly isWord: "✓ từ có thật";
|
|
59
76
|
readonly notWord: "✗ không phải từ chuẩn";
|
|
60
77
|
};
|
|
78
|
+
export type HelpPaths = {
|
|
79
|
+
env: string;
|
|
80
|
+
settings: string;
|
|
81
|
+
db: string;
|
|
82
|
+
};
|
|
83
|
+
export type HelpSection = {
|
|
84
|
+
title: string;
|
|
85
|
+
rows: [string, string][];
|
|
86
|
+
};
|
|
87
|
+
export declare const helpSections: (paths: HelpPaths) => HelpSection[];
|
|
61
88
|
export declare function configProblemText(problem: ConfigProblem, envPath: string): string;
|
|
62
89
|
export declare function failureText(failure: Failure, config: Config, query: string): string;
|
|
63
90
|
export declare function retryText(event: RetryEvent): string;
|
package/dist/lib/messages.js
CHANGED
|
@@ -33,6 +33,7 @@ export const CLI = {
|
|
|
33
33
|
missingModel: '--model cần một tên model. Ví dụ: --model z-ai/glm-4.6',
|
|
34
34
|
dbOpenFailed: (path, detail) => `✗ Không mở được ${path}: ${detail}`,
|
|
35
35
|
unknownError: (detail) => `✗ Lỗi không rõ: ${detail}`,
|
|
36
|
+
settingsIgnored: (path, detail) => `✗ Bỏ qua ${path} vì đọc không được: ${detail}`,
|
|
36
37
|
};
|
|
37
38
|
// Where esc leads from a view that came from a list, by its heading; otherwise home.
|
|
38
39
|
export const backTo = (origin) => (origin ? TUI.listHeading[origin.which] : 'home');
|
|
@@ -43,11 +44,11 @@ export const TUI = {
|
|
|
43
44
|
homeHeading: 'Home',
|
|
44
45
|
countFailed: (detail) => `✗ Không đếm được lookup: ${detail}`,
|
|
45
46
|
homeInstruction: 'Hỏi về từ, thành ngữ, cách dùng. Trộn tiếng Việt và English đều được.',
|
|
46
|
-
homeHintsEmpty: 'gõ câu hỏi rồi enter · ↓
|
|
47
|
-
homeHints: 'enter hỏi · ↓
|
|
47
|
+
homeHintsEmpty: 'gõ câu hỏi rồi enter · ↓ menu · esc thoát',
|
|
48
|
+
homeHints: 'enter hỏi · ↓ menu · esc xoá ô · ctrl+c thoát',
|
|
48
49
|
homeMenuHints: '↑↓ chọn · enter mở · esc về ô gõ · q thoát',
|
|
49
50
|
homeMenuTitle: '── hoặc chọn: ──',
|
|
50
|
-
menuLabel: { history: 'History ', wordbook: 'Wordbook' },
|
|
51
|
+
menuLabel: { history: 'History ', wordbook: 'Wordbook', model: 'Model ', help: 'Help ' },
|
|
51
52
|
listHeading: { history: 'History', wordbook: 'Wordbook' },
|
|
52
53
|
listCount: {
|
|
53
54
|
history: (n) => `${n} lookup${n === 1 ? '' : 's'}`,
|
|
@@ -73,9 +74,69 @@ export const TUI = {
|
|
|
73
74
|
saveFailed: (detail) => `✗ Không lưu được: ${detail}`,
|
|
74
75
|
failedHints: (backTo) => `r thử lại · esc về ${backTo} · q thoát`,
|
|
75
76
|
setupHints: 'esc thoát',
|
|
77
|
+
modelHeading: 'Model',
|
|
78
|
+
modelInstruction: 'Model trả lời các câu hỏi sau. Đáp án đã lưu vẫn dùng lại; r để hỏi lại bằng model mới.',
|
|
79
|
+
modelDefault: 'mặc định',
|
|
80
|
+
modelNotes: { 'qwen/qwen3-30b-a3b-instruct-2507': 'nhanh' },
|
|
81
|
+
modelInUse: '✓ đang dùng',
|
|
82
|
+
customRow: 'Khác: gõ id model…',
|
|
83
|
+
customExample: 'Id trên OpenRouter, ví dụ z-ai/glm-4.6. Tên trần như gpt-5-nano là model của OpenAI.',
|
|
84
|
+
customRejected: (model) => `✗ ${model} là id của OpenRouter, mà b3dict đang chạy route OpenAI. Dùng tên model của OpenAI như gpt-5-mini.`,
|
|
85
|
+
pinned: (model) => `B3_DICT_MODEL=${model} đang đặt, nên lần mở sau b3dict vẫn dùng ${model}.`,
|
|
86
|
+
pickerHints: '↑↓ chọn · enter dùng · esc về home · q thoát',
|
|
87
|
+
customHints: 'enter dùng · esc huỷ',
|
|
88
|
+
settingsSaveFailed: (detail) => `✗ Không lưu được lựa chọn, model chỉ đổi cho lần này: ${detail}`,
|
|
89
|
+
helpHeading: 'Help',
|
|
90
|
+
helpHints: 'esc về home · q thoát',
|
|
76
91
|
isWord: '✓ từ có thật',
|
|
77
92
|
notWord: '✗ không phải từ chuẩn',
|
|
78
93
|
};
|
|
94
|
+
// The Help screen: keys by place, the variables b3dict reads, and where its files are.
|
|
95
|
+
export const helpSections = (paths) => [
|
|
96
|
+
{
|
|
97
|
+
title: 'Home',
|
|
98
|
+
rows: [
|
|
99
|
+
['enter', 'hỏi câu đang gõ'],
|
|
100
|
+
['↓', 'xuống menu: History, Wordbook, Model, Help'],
|
|
101
|
+
['esc', 'xoá ô; ô trống thì thoát'],
|
|
102
|
+
['ctrl+c', 'thoát (q trong ô gõ chỉ là chữ q)'],
|
|
103
|
+
],
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
title: 'Đáp án',
|
|
107
|
+
rows: [
|
|
108
|
+
['r', 'hỏi lại model, bỏ qua đáp án đã lưu'],
|
|
109
|
+
['s', 'lưu ★ hoặc bỏ lưu'],
|
|
110
|
+
['esc', 'về chỗ vừa mở nó'],
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
title: 'History, Wordbook',
|
|
115
|
+
rows: [
|
|
116
|
+
['↑↓', 'di chuyển'],
|
|
117
|
+
['enter', 'mở đáp án đã lưu, không gọi model'],
|
|
118
|
+
['s', 'lưu ★ hoặc bỏ lưu dòng đang chọn'],
|
|
119
|
+
],
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
title: 'Cấu hình',
|
|
123
|
+
rows: [
|
|
124
|
+
['OPENROUTER_API_KEY', 'key OpenRouter, được ưu tiên khi có cả hai'],
|
|
125
|
+
['OPENAI_API_KEY', 'key OpenAI'],
|
|
126
|
+
['B3_DICT_MODEL', 'ép model, thắng lựa chọn trong Model'],
|
|
127
|
+
['B3_DICT_PROVIDER', 'openrouter hoặc openai'],
|
|
128
|
+
['B3_DICT_HOME', 'thư mục chứa .env, settings.json, data/ (đặt ngoài .env)'],
|
|
129
|
+
],
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
title: 'File',
|
|
133
|
+
rows: [
|
|
134
|
+
['.env', paths.env],
|
|
135
|
+
['settings', paths.settings],
|
|
136
|
+
['lookups', paths.db],
|
|
137
|
+
],
|
|
138
|
+
},
|
|
139
|
+
];
|
|
79
140
|
const setupSteps = (envPath) => `1. Tạo key: ${KEY_URL.openrouter}
|
|
80
141
|
(hoặc ${KEY_URL.openai})
|
|
81
142
|
2. echo "OPENROUTER_API_KEY=sk-or-…" >> ${envPath}
|
package/dist/lib/messages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/lib/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,wGAAwG;AAExG,MAAM,CAAC,MAAM,OAAO,GAA0B;IAC5C,UAAU,EAAE,4BAA4B;IACxC,MAAM,EAAE,sCAAsC;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;yDAoBqC,CAAC;AAE1D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,aAAa,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,qBAAqB,IAAI,EAAE;IAC5D,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,yBAAyB,MAAM,EAAE;IACnE,YAAY,EAAE,iDAAiD;IAC/D,YAAY,EAAE,wDAAwD;IACtE,YAAY,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE,CAAC,mBAAmB,IAAI,KAAK,MAAM,EAAE;IACpF,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,mBAAmB,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/lib/messages.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/model.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { ListKind, ListRow, LookupRow } from './db.js';
|
|
|
2
2
|
import type { Answer } from './envelope.js';
|
|
3
3
|
import type { LookupOutcome } from './lookup.js';
|
|
4
4
|
import type { RetryEvent } from './policy.js';
|
|
5
|
-
import type { ConfigProblem, Failure } from './types.js';
|
|
5
|
+
import type { Config, ConfigProblem, Failure, Route } from './types.js';
|
|
6
6
|
export type Draft = {
|
|
7
7
|
text: string;
|
|
8
8
|
cursor: number;
|
|
@@ -16,7 +16,7 @@ export type Origin = {
|
|
|
16
16
|
which: ListKind;
|
|
17
17
|
index: number;
|
|
18
18
|
};
|
|
19
|
-
export type Focus = 'input' | ListKind;
|
|
19
|
+
export type Focus = 'input' | ListKind | 'model' | 'help';
|
|
20
20
|
export type View = {
|
|
21
21
|
screen: 'setup';
|
|
22
22
|
problem: ConfigProblem;
|
|
@@ -24,6 +24,7 @@ export type View = {
|
|
|
24
24
|
screen: 'home';
|
|
25
25
|
draft: Draft;
|
|
26
26
|
focus: Focus;
|
|
27
|
+
notice?: string;
|
|
27
28
|
} | {
|
|
28
29
|
screen: 'list';
|
|
29
30
|
which: ListKind;
|
|
@@ -46,9 +47,24 @@ export type View = {
|
|
|
46
47
|
fresh: boolean;
|
|
47
48
|
failure: Failure;
|
|
48
49
|
origin?: Origin;
|
|
50
|
+
} | {
|
|
51
|
+
screen: 'model';
|
|
52
|
+
route: Route;
|
|
53
|
+
rows: string[];
|
|
54
|
+
current: string;
|
|
55
|
+
index: number;
|
|
56
|
+
draft?: Draft;
|
|
57
|
+
rejected?: string;
|
|
58
|
+
} | {
|
|
59
|
+
screen: 'help';
|
|
60
|
+
};
|
|
61
|
+
export type Active = {
|
|
62
|
+
route: Route;
|
|
63
|
+
model: string;
|
|
49
64
|
};
|
|
50
65
|
export type Model = {
|
|
51
66
|
requests: number;
|
|
67
|
+
active?: Active;
|
|
52
68
|
view: View;
|
|
53
69
|
};
|
|
54
70
|
export type Msg = {
|
|
@@ -107,6 +123,24 @@ export type Msg = {
|
|
|
107
123
|
} | {
|
|
108
124
|
type: 'saveFailed';
|
|
109
125
|
detail: string;
|
|
126
|
+
} | {
|
|
127
|
+
type: 'modelShown';
|
|
128
|
+
} | {
|
|
129
|
+
type: 'pickerMoved';
|
|
130
|
+
by: -1 | 1;
|
|
131
|
+
} | {
|
|
132
|
+
type: 'customStarted';
|
|
133
|
+
} | {
|
|
134
|
+
type: 'customCancelled';
|
|
135
|
+
} | {
|
|
136
|
+
type: 'customRejected';
|
|
137
|
+
model: string;
|
|
138
|
+
} | {
|
|
139
|
+
type: 'modelPicked';
|
|
140
|
+
model: string;
|
|
141
|
+
notice?: string;
|
|
142
|
+
} | {
|
|
143
|
+
type: 'helpShown';
|
|
110
144
|
} | {
|
|
111
145
|
type: 'back';
|
|
112
146
|
};
|
|
@@ -126,10 +160,14 @@ export type Intent = Msg | {
|
|
|
126
160
|
id: string;
|
|
127
161
|
query: string;
|
|
128
162
|
origin: Origin;
|
|
163
|
+
} | {
|
|
164
|
+
type: 'pickModel';
|
|
165
|
+
model: string;
|
|
129
166
|
};
|
|
130
167
|
export type Key = Partial<Record<'return' | 'escape' | 'backspace' | 'delete' | 'leftArrow' | 'rightArrow' | 'upArrow' | 'downArrow' | 'ctrl' | 'meta', boolean>>;
|
|
131
168
|
export declare function init(config: {
|
|
132
169
|
ok: true;
|
|
170
|
+
data: Pick<Config, 'route' | 'model'>;
|
|
133
171
|
} | {
|
|
134
172
|
ok: false;
|
|
135
173
|
error: ConfigProblem;
|
package/dist/lib/model.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import { checkModel, MODEL_CHOICES } from './config.js';
|
|
2
|
+
const FOCUS_ORDER = ['input', 'history', 'wordbook', 'model', 'help'];
|
|
2
3
|
const EMPTY_DRAFT = { text: '', cursor: 0 };
|
|
3
4
|
const HOME = { screen: 'home', draft: EMPTY_DRAFT, focus: 'input' };
|
|
4
5
|
export function init(config) {
|
|
5
|
-
|
|
6
|
+
if (!config.ok)
|
|
7
|
+
return { requests: 0, view: { screen: 'setup', problem: config.error } };
|
|
8
|
+
return { requests: 0, active: { route: config.data.route, model: config.data.model }, view: HOME };
|
|
6
9
|
}
|
|
7
10
|
// A paste arrives as one chunk: keep its line breaks, drop anything that isn't text.
|
|
8
11
|
const clean = (text) => text
|
|
@@ -28,9 +31,15 @@ function editDraft(draft, msg) {
|
|
|
28
31
|
return draft;
|
|
29
32
|
}
|
|
30
33
|
}
|
|
34
|
+
// The picker opens on the model in use, which gets a row of its own when it isn't a choice.
|
|
35
|
+
function picker({ route, model }) {
|
|
36
|
+
const choices = MODEL_CHOICES[route];
|
|
37
|
+
const rows = choices.includes(model) ? [...choices] : [...choices, model];
|
|
38
|
+
return { screen: 'model', route, rows, current: model, index: rows.indexOf(model) };
|
|
39
|
+
}
|
|
31
40
|
function ask(model, query, fresh, origin) {
|
|
32
41
|
const id = model.requests + 1;
|
|
33
|
-
return { requests: id, view: { screen: 'asking', request: { id, query, fresh }, ...(origin && { origin }) } };
|
|
42
|
+
return { ...model, requests: id, view: { screen: 'asking', request: { id, query, fresh }, ...(origin && { origin }) } };
|
|
34
43
|
}
|
|
35
44
|
export function update(model, msg) {
|
|
36
45
|
const { view } = model;
|
|
@@ -42,6 +51,8 @@ export function update(model, msg) {
|
|
|
42
51
|
case 'erased':
|
|
43
52
|
case 'moved':
|
|
44
53
|
case 'cleared':
|
|
54
|
+
if (view.screen === 'model' && view.draft)
|
|
55
|
+
return to({ ...view, draft: editDraft(view.draft, msg), rejected: undefined });
|
|
45
56
|
return view.screen === 'home' ? to({ ...view, draft: editDraft(view.draft, msg) }) : model;
|
|
46
57
|
case 'focused': {
|
|
47
58
|
if (view.screen !== 'home')
|
|
@@ -94,7 +105,32 @@ export function update(model, msg) {
|
|
|
94
105
|
return view.screen === 'answer' ? to({ ...view, entry: msg.entry, notice: undefined }) : model;
|
|
95
106
|
case 'saveFailed':
|
|
96
107
|
return view.screen === 'answer' ? to({ ...view, notice: msg.detail }) : model;
|
|
108
|
+
case 'modelShown':
|
|
109
|
+
return view.screen === 'home' && model.active ? to(picker(model.active)) : model;
|
|
110
|
+
case 'pickerMoved':
|
|
111
|
+
return view.screen === 'model' && !view.draft ? to({ ...view, index: clamp(view.index + msg.by, view.rows.length) }) : model;
|
|
112
|
+
case 'customStarted':
|
|
113
|
+
return view.screen === 'model' ? to({ ...view, index: view.rows.length, draft: EMPTY_DRAFT }) : model;
|
|
114
|
+
case 'customCancelled':
|
|
115
|
+
return view.screen === 'model' ? to({ ...view, draft: undefined, rejected: undefined }) : model;
|
|
116
|
+
case 'customRejected':
|
|
117
|
+
return view.screen === 'model' ? to({ ...view, rejected: msg.model }) : model;
|
|
118
|
+
case 'modelPicked':
|
|
119
|
+
if (!model.active)
|
|
120
|
+
return model;
|
|
121
|
+
return {
|
|
122
|
+
...model,
|
|
123
|
+
active: { ...model.active, model: msg.model },
|
|
124
|
+
view: { ...HOME, focus: 'model', ...(msg.notice && { notice: msg.notice }) },
|
|
125
|
+
};
|
|
126
|
+
case 'helpShown':
|
|
127
|
+
return view.screen === 'home' ? to({ screen: 'help' }) : model;
|
|
97
128
|
case 'back':
|
|
129
|
+
// The picker and Help go back to the menu row that opened them; everything else to the input.
|
|
130
|
+
if (view.screen === 'model')
|
|
131
|
+
return to({ ...HOME, focus: 'model' });
|
|
132
|
+
if (view.screen === 'help')
|
|
133
|
+
return to({ ...HOME, focus: 'help' });
|
|
98
134
|
return view.screen === 'setup' || view.screen === 'home' ? model : to(HOME);
|
|
99
135
|
}
|
|
100
136
|
}
|
|
@@ -108,8 +144,13 @@ export function intentFor(view, input, key) {
|
|
|
108
144
|
return { type: 'focused', by: -1 };
|
|
109
145
|
if (key.downArrow)
|
|
110
146
|
return { type: 'focused', by: 1 };
|
|
111
|
-
if (key.return)
|
|
147
|
+
if (key.return) {
|
|
148
|
+
if (view.focus === 'model')
|
|
149
|
+
return { type: 'modelShown' };
|
|
150
|
+
if (view.focus === 'help')
|
|
151
|
+
return { type: 'helpShown' };
|
|
112
152
|
return { type: 'openList', which: view.focus, index: 0 };
|
|
153
|
+
}
|
|
113
154
|
if (key.escape)
|
|
114
155
|
return { type: 'focusInput' };
|
|
115
156
|
return input === 'q' ? { type: 'quit' } : null;
|
|
@@ -165,6 +206,42 @@ export function intentFor(view, input, key) {
|
|
|
165
206
|
if (input === 'r')
|
|
166
207
|
return { type: 'reasked' };
|
|
167
208
|
return input === 'q' ? { type: 'quit' } : null;
|
|
209
|
+
case 'model': {
|
|
210
|
+
if (view.draft) {
|
|
211
|
+
if (key.escape)
|
|
212
|
+
return { type: 'customCancelled' };
|
|
213
|
+
if (key.return) {
|
|
214
|
+
if (view.draft.text.trim() === '')
|
|
215
|
+
return null;
|
|
216
|
+
const id = checkModel(view.route, view.draft.text);
|
|
217
|
+
return id.ok ? { type: 'pickModel', model: id.data } : { type: 'customRejected', model: view.draft.text.trim() };
|
|
218
|
+
}
|
|
219
|
+
if (key.backspace || key.delete)
|
|
220
|
+
return { type: 'erased' };
|
|
221
|
+
if (key.leftArrow)
|
|
222
|
+
return { type: 'moved', by: -1 };
|
|
223
|
+
if (key.rightArrow)
|
|
224
|
+
return { type: 'moved', by: 1 };
|
|
225
|
+
if (key.upArrow || key.downArrow || key.ctrl || key.meta || input === '')
|
|
226
|
+
return null;
|
|
227
|
+
return { type: 'typed', text: input };
|
|
228
|
+
}
|
|
229
|
+
if (key.upArrow)
|
|
230
|
+
return { type: 'pickerMoved', by: -1 };
|
|
231
|
+
if (key.downArrow)
|
|
232
|
+
return { type: 'pickerMoved', by: 1 };
|
|
233
|
+
if (key.escape)
|
|
234
|
+
return { type: 'back' };
|
|
235
|
+
if (key.return) {
|
|
236
|
+
const row = view.rows[view.index];
|
|
237
|
+
return row ? { type: 'pickModel', model: row } : { type: 'customStarted' };
|
|
238
|
+
}
|
|
239
|
+
return input === 'q' ? { type: 'quit' } : null;
|
|
240
|
+
}
|
|
241
|
+
case 'help':
|
|
242
|
+
if (key.escape)
|
|
243
|
+
return { type: 'back' };
|
|
244
|
+
return input === 'q' ? { type: 'quit' } : null;
|
|
168
245
|
case 'setup':
|
|
169
246
|
return key.escape || input === 'q' ? { type: 'quit' } : null;
|
|
170
247
|
}
|
package/dist/lib/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/lib/model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/lib/model.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/paths.d.ts
CHANGED
|
@@ -4,5 +4,6 @@ export declare function resolveHome(env: Env, packageRoot: string, home: string)
|
|
|
4
4
|
export declare const HOME_DIR: string;
|
|
5
5
|
export declare const ENV_PATH: string;
|
|
6
6
|
export declare const DB_PATH: string;
|
|
7
|
+
export declare const SETTINGS_PATH: string;
|
|
7
8
|
export declare const PACKAGE_JSON_PATH: string;
|
|
8
9
|
export {};
|
package/dist/lib/paths.js
CHANGED
|
@@ -3,7 +3,7 @@ import { dirname, join, resolve, sep } from 'node:path';
|
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
// src/lib and dist/lib both sit two levels below the package root, so this holds in dev and after build.
|
|
5
5
|
export const PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
6
|
-
// Where .env and data/ live. A checkout keeps them beside the code; a package installed under
|
|
6
|
+
// Where .env, settings.json and data/ live. A checkout keeps them beside the code; a package installed under
|
|
7
7
|
// node_modules must not, because the next install wipes the directory. B3_DICT_HOME overrides both.
|
|
8
8
|
export function resolveHome(env, packageRoot, home) {
|
|
9
9
|
const forced = env.B3_DICT_HOME?.trim();
|
|
@@ -18,5 +18,6 @@ export function resolveHome(env, packageRoot, home) {
|
|
|
18
18
|
export const HOME_DIR = resolveHome(process.env, PACKAGE_ROOT, homedir());
|
|
19
19
|
export const ENV_PATH = join(HOME_DIR, '.env');
|
|
20
20
|
export const DB_PATH = join(HOME_DIR, 'data', 'b3-dict.db');
|
|
21
|
+
export const SETTINGS_PATH = join(HOME_DIR, 'settings.json');
|
|
21
22
|
export const PACKAGE_JSON_PATH = join(PACKAGE_ROOT, 'package.json');
|
|
22
23
|
//# sourceMappingURL=paths.js.map
|
package/dist/lib/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,yGAAyG;AACzG,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAIzF,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,yGAAyG;AACzG,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAIzF,6GAA6G;AAC7G,oGAAoG;AACpG,MAAM,UAAU,WAAW,CAAC,GAAQ,EAAE,WAAmB,EAAE,IAAY;IACrE,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,IAAI,MAAM;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type Result } from './types.js';
|
|
3
|
+
declare const SettingsFile: z.ZodObject<{
|
|
4
|
+
model: z.ZodOptional<z.ZodString>;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
export type Settings = z.infer<typeof SettingsFile>;
|
|
7
|
+
export declare function readSettings(path: string): Result<Settings>;
|
|
8
|
+
export declare function writeSettings(path: string, settings: Settings): Result<void>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { err, messageOf, ok } from './types.js';
|
|
5
|
+
// What the TUI remembers between runs. Only the picked model for now.
|
|
6
|
+
const SettingsFile = z.object({ model: z.string().optional() });
|
|
7
|
+
// A missing file is no settings. A broken one is an error the caller reports and then ignores.
|
|
8
|
+
export function readSettings(path) {
|
|
9
|
+
if (!existsSync(path))
|
|
10
|
+
return ok({});
|
|
11
|
+
try {
|
|
12
|
+
const parsed = SettingsFile.safeParse(JSON.parse(readFileSync(path, 'utf8')));
|
|
13
|
+
return parsed.success ? ok(parsed.data) : err(parsed.error.message);
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
return err(messageOf(e));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function writeSettings(path, settings) {
|
|
20
|
+
try {
|
|
21
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
22
|
+
writeFileSync(path, `${JSON.stringify(settings, null, 2)}\n`);
|
|
23
|
+
return ok(undefined);
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
return err(messageOf(e));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/lib/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAe,MAAM,YAAY,CAAC;AAE7D,sEAAsE;AACtE,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAGhE,+FAA+F;AAC/F,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9E,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAkB;IAC5D,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9D,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { Gutter, GutterLine } from '../components/gutter-line.js';
|
|
4
|
+
import { helpSections, TUI } from '../lib/messages.js';
|
|
5
|
+
import { C } from '../lib/theme.js';
|
|
6
|
+
// Keys, settings and file paths on one screen. The first column is as wide as its longest entry.
|
|
7
|
+
export function Help({ paths }) {
|
|
8
|
+
const sections = helpSections(paths);
|
|
9
|
+
const width = Math.max(...sections.flatMap((s) => s.rows.map(([key]) => key.length))) + 2;
|
|
10
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: C.sapphire, bold: true, children: TUI.helpHeading }), _jsxs(Gutter, { children: [sections.map((section, at) => (_jsxs(Box, { flexDirection: "column", children: [at > 0 && _jsx(GutterLine, {}), _jsx(GutterLine, { children: _jsx(Text, { color: C.sapphire, children: section.title }) }), section.rows.map(([key, text]) => (_jsxs(GutterLine, { children: [_jsx(Box, { width: width, flexShrink: 0, children: _jsx(Text, { color: C.mauve, children: key }) }), _jsx(Text, { color: C.label, children: text })] }, key)))] }, section.title))), _jsx(GutterLine, {}), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: TUI.helpHints }) })] })] }));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/screens/help.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAkB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AAEpC,iGAAiG;AACjG,MAAM,UAAU,IAAI,CAAC,EAAE,KAAK,EAAwB;IAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1F,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,kBAC1B,GAAG,CAAC,WAAW,GACX,EACP,MAAC,MAAM,eACJ,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAC7B,MAAC,GAAG,IAAqB,aAAa,EAAC,QAAQ,aAC5C,EAAE,GAAG,CAAC,IAAI,KAAC,UAAU,KAAG,EACzB,KAAC,UAAU,cACT,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,YAAG,OAAO,CAAC,KAAK,GAAQ,GACpC,EACZ,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CACjC,MAAC,UAAU,eACT,KAAC,GAAG,IAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,YAC9B,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,YAAG,GAAG,GAAQ,GAC9B,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,YAAG,IAAI,GAAQ,KAJpB,GAAG,CAKP,CACd,CAAC,KAZM,OAAO,CAAC,KAAK,CAajB,CACP,CAAC,EACF,KAAC,UAAU,KAAG,EACd,KAAC,UAAU,cACT,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,YAAG,GAAG,CAAC,SAAS,GAAQ,GACpC,IACN,IACL,CACP,CAAC;AACJ,CAAC"}
|
package/dist/screens/home.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { Counts } from '../lib/db.js';
|
|
|
2
2
|
import type { View } from '../lib/model.js';
|
|
3
3
|
import type { Config } from '../lib/types.js';
|
|
4
4
|
type HomeView = Exclude<View, {
|
|
5
|
-
screen: 'setup' | 'list';
|
|
5
|
+
screen: 'setup' | 'list' | 'model' | 'help';
|
|
6
6
|
}>;
|
|
7
7
|
type Props = {
|
|
8
8
|
view: HomeView;
|
package/dist/screens/home.js
CHANGED
|
@@ -20,7 +20,7 @@ function Body({ view, config, counts, notice }) {
|
|
|
20
20
|
switch (view.screen) {
|
|
21
21
|
case 'home': {
|
|
22
22
|
const onMenu = view.focus !== 'input';
|
|
23
|
-
return (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(QueryInput, { draft: view.draft, active: !onMenu }) }), _jsx(GutterLine, {}), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: TUI.homeMenuTitle }) }), ['history', 'wordbook'].map((which) => (_jsx(MenuRow, {
|
|
23
|
+
return (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(QueryInput, { draft: view.draft, active: !onMenu }) }), _jsx(GutterLine, {}), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: TUI.homeMenuTitle }) }), ['history', 'wordbook'].map((which) => (_jsx(MenuRow, { label: TUI.menuLabel[which], active: view.focus === which, detail: `(${counts?.[which] ?? '…'})` }, which))), _jsx(MenuRow, { label: TUI.menuLabel.model, active: view.focus === 'model', detail: shortModel(config.model) }), _jsx(MenuRow, { label: TUI.menuLabel.help, active: view.focus === 'help' }), [view.notice, notice].map((text) => text && (_jsx(GutterLine, { children: _jsx(Text, { color: C.red, children: text }) }, text))), _jsx(GutterLine, {}), _jsx(Hints, { children: onMenu ? TUI.homeMenuHints : view.draft.text === '' ? TUI.homeHintsEmpty : TUI.homeHints })] }));
|
|
24
24
|
}
|
|
25
25
|
case 'asking':
|
|
26
26
|
return (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(QueryInput, { text: view.request.query }) }), _jsx(GutterLine, {}), _jsx(Waiting, { model: shortModel(config.model), retry: view.retry }, view.request.id), _jsx(Hints, { children: TUI.askingHints(backTo(view.origin)) })] }));
|
|
@@ -30,8 +30,8 @@ function Body({ view, config, counts, notice }) {
|
|
|
30
30
|
return (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(QueryInput, { text: view.query }) }), _jsx(GutterLine, {}), _jsx(MessageBlock, { text: failureText(view.failure, config, view.query) }), _jsx(GutterLine, {}), _jsx(Hints, { children: TUI.failedHints(backTo(view.origin)) })] }));
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
function MenuRow({
|
|
34
|
-
return (_jsxs(GutterLine, { children: [_jsx(Cursor, { active: active }), _jsx(Text, { color: active ? C.mauve : C.label, bold: active, children:
|
|
33
|
+
function MenuRow({ label, active, detail }) {
|
|
34
|
+
return (_jsxs(GutterLine, { children: [_jsx(Cursor, { active: active }), _jsx(Text, { color: active ? C.mauve : C.label, bold: active, children: label }), detail && _jsxs(Text, { color: C.overlay0, children: [" ", detail] })] }));
|
|
35
35
|
}
|
|
36
36
|
// Spinner, elapsed seconds, and the retry line when the policy is waiting or regenerating.
|
|
37
37
|
function Waiting({ model, retry }) {
|
package/dist/screens/home.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"home.js","sourceRoot":"","sources":["../../src/screens/home.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AAQpC,MAAM,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAwB,EAAE,EAAE,CAAC,CACpD,KAAC,UAAU,cACT,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,YAAG,QAAQ,GAAQ,GAC/B,CACd,CAAC;AAEF,MAAM,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAS;IAC1D,gFAAgF;IAChF,MAAM,MAAM,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,kBAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,GACpD,EACN,CAAC,MAAM,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,YAAG,GAAG,CAAC,eAAe,GAAQ,EACjE,KAAC,MAAM,cACL,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAI,GAC7D,IACL,CACP,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAS;IACnD,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC;YACtC,OAAO,CACL,8BACE,KAAC,UAAU,cACT,KAAC,UAAU,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,GAAI,GACvC,EACb,KAAC,UAAU,KAAG,EACd,KAAC,UAAU,cACT,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,YAAG,GAAG,CAAC,aAAa,GAAQ,GACxC,EACX,CAAC,SAAS,EAAE,UAAU,CAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACjD,KAAC,OAAO,IAAa,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"home.js","sourceRoot":"","sources":["../../src/screens/home.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { Cursor } from '../components/cursor.js';
|
|
4
|
+
import { Gutter, GutterLine } from '../components/gutter-line.js';
|
|
5
|
+
import { QueryInput } from '../components/query-input.js';
|
|
6
|
+
import { DEFAULT_MODEL } from '../lib/config.js';
|
|
7
|
+
import { TUI } from '../lib/messages.js';
|
|
8
|
+
import { C } from '../lib/theme.js';
|
|
9
|
+
const Muted = ({ children }) => (_jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: children }) }));
|
|
10
|
+
// The model picker: the route's choices, the model in use, and a box for any other id.
|
|
11
|
+
// `pinned` is B3_DICT_MODEL, which will win again on the next run whatever is picked here.
|
|
12
|
+
export function ModelPicker({ view, pinned }) {
|
|
13
|
+
const { route, rows, current, index, draft, rejected } = view;
|
|
14
|
+
const note = (id) => (id === DEFAULT_MODEL[route] ? TUI.modelDefault : TUI.modelNotes[id]);
|
|
15
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: C.sapphire, bold: true, children: TUI.modelHeading }), _jsx(Text, { color: C.overlay1, children: TUI.modelInstruction }), _jsxs(Gutter, { children: [rows.map((id, at) => {
|
|
16
|
+
const active = !draft && at === index;
|
|
17
|
+
return (_jsxs(GutterLine, { children: [_jsx(Cursor, { active: active }), _jsx(Text, { color: active ? C.mauve : C.label, bold: active, children: id }), note(id) && _jsxs(Text, { color: C.overlay0, children: [" ", note(id)] }), id === current && _jsxs(Text, { color: C.green, children: [" ", TUI.modelInUse] })] }, id));
|
|
18
|
+
}), draft ? (_jsx(GutterLine, { children: _jsx(QueryInput, { draft: draft }) })) : (_jsxs(GutterLine, { children: [_jsx(Cursor, { active: index === rows.length }), _jsx(Text, { color: index === rows.length ? C.mauve : C.overlay1, bold: index === rows.length, children: TUI.customRow })] })), draft && _jsx(Muted, { children: TUI.customExample }), rejected && (_jsx(GutterLine, { children: _jsx(Text, { color: C.red, children: TUI.customRejected(rejected) }) })), pinned && _jsx(Muted, { children: TUI.pinned(pinned) }), _jsx(GutterLine, {}), _jsx(Muted, { children: draft ? TUI.customHints : TUI.pickerHints })] })] }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=model-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-picker.js","sourceRoot":"","sources":["../../src/screens/model-picker.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "b3-dict",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "AI-first dictionary for the terminal: freeform EN/VI questions about words, answered in Vietnamese",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "ISC",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"!dist/lib/fixtures.*"
|
|
14
14
|
],
|
|
15
15
|
"bin": {
|
|
16
|
-
"b3dict": "
|
|
16
|
+
"b3dict": "dist/cli.js"
|
|
17
17
|
},
|
|
18
18
|
"scripts": {
|
|
19
19
|
"dev": "tsx src/cli.tsx",
|