b3-dict 0.4.1 → 0.5.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 +19 -0
- package/dist/app.d.ts +1 -1
- package/dist/app.js +10 -9
- package/dist/app.js.map +1 -1
- package/dist/cli.js +24 -13
- package/dist/cli.js.map +1 -1
- package/dist/components/answer-view.js +9 -5
- package/dist/components/answer-view.js.map +1 -1
- package/dist/lib/ask.js +2 -1
- package/dist/lib/ask.js.map +1 -1
- package/dist/lib/config.d.ts +2 -0
- package/dist/lib/config.js +36 -19
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/envelope.d.ts +1 -0
- package/dist/lib/envelope.js +11 -2
- package/dist/lib/envelope.js.map +1 -1
- package/dist/lib/messages.d.ts +1 -0
- package/dist/lib/messages.js +19 -14
- package/dist/lib/messages.js.map +1 -1
- package/dist/lib/model.d.ts +6 -2
- package/dist/lib/model.js +15 -6
- package/dist/lib/model.js.map +1 -1
- package/dist/lib/render-text.js +18 -4
- package/dist/lib/render-text.js.map +1 -1
- package/dist/lib/settings.d.ts +2 -1
- package/dist/lib/settings.js +15 -3
- package/dist/lib/settings.js.map +1 -1
- package/dist/lib/tracing.d.ts +3 -0
- package/dist/lib/tracing.js +12 -0
- package/dist/lib/tracing.js.map +1 -1
- package/dist/screens/model-picker.js +1 -1
- package/dist/screens/model-picker.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,6 +25,25 @@ Want to see what each call cost and how long it took? Put your own `LANGFUSE_PUB
|
|
|
25
25
|
|
|
26
26
|
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, and which provider when both keys are in `.env` (remembered next time, unless `B3_DICT_PROVIDER` or `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.
|
|
27
27
|
|
|
28
|
+
### Seeing Fireworks costs in Langfuse
|
|
29
|
+
|
|
30
|
+
Traces arrive with token counts but an empty cost column for Fireworks models. Langfuse has no built-in price for them, so you add one yourself under Settings → Models in your Langfuse project. Two things go wrong easily:
|
|
31
|
+
|
|
32
|
+
- **Match the full model id.** b3dict sends `accounts/fireworks/models/minimax-m3`, not `minimax-m3`. A pattern of `(?i)^(minimax-m3)$` matches nothing and the cost stays empty.
|
|
33
|
+
- **Prices are per token, not per million.** `0.3` means $0.30 for every token, which turns a tenth-of-a-cent lookup into hundreds of dollars.
|
|
34
|
+
|
|
35
|
+
For `minimax-m3` at $0.30 in and $1.20 out per million tokens:
|
|
36
|
+
|
|
37
|
+
| Field | Value |
|
|
38
|
+
|---|---|
|
|
39
|
+
| Match pattern | `(?i)^(accounts/fireworks/models/minimax-m3)$` |
|
|
40
|
+
| `input` price | `0.0000003` |
|
|
41
|
+
| `output` price | `0.0000012` |
|
|
42
|
+
|
|
43
|
+
Fireworks also reports cached prompt tokens under the usage key `input_cached_tokens`. Without a price row for that key those tokens count as free, so add one with Fireworks' cached rate for your model. Every other Fireworks model needs its own definition the same way; take the rates from the [Fireworks pricing page](https://fireworks.ai/pricing).
|
|
44
|
+
|
|
45
|
+
A definition only prices traces that arrive after you save it. Older ones keep their empty cost.
|
|
46
|
+
|
|
28
47
|
## Development
|
|
29
48
|
|
|
30
49
|
```bash
|
package/dist/app.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Ask, type LookupDeps } from './lib/lookup.js';
|
|
2
2
|
import { type HelpPaths } from './lib/messages.js';
|
|
3
3
|
import type { Settings } from './lib/settings.js';
|
|
4
|
-
import {
|
|
4
|
+
import type { Config, ConfigProblem, Result, Route } from './lib/types.js';
|
|
5
5
|
export type Deps = Omit<LookupDeps, 'onRetry' | 'ask'> & {
|
|
6
6
|
askFor: (route: Route, model: string) => Ask;
|
|
7
7
|
saveSettings: (settings: Settings) => Result<void>;
|
package/dist/app.js
CHANGED
|
@@ -6,8 +6,7 @@ import { countLookups, getLookup, listLookups, setSaved } from './lib/db.js';
|
|
|
6
6
|
import { parseStored } from './lib/envelope.js';
|
|
7
7
|
import { lookup } from './lib/lookup.js';
|
|
8
8
|
import { TUI } from './lib/messages.js';
|
|
9
|
-
import { init, intentFor, update } from './lib/model.js';
|
|
10
|
-
import { ok } from './lib/types.js';
|
|
9
|
+
import { init, intentFor, pickedModel, pickedRoute, update } from './lib/model.js';
|
|
11
10
|
import { Help } from './screens/help.js';
|
|
12
11
|
import { Home } from './screens/home.js';
|
|
13
12
|
import { List } from './screens/list.js';
|
|
@@ -21,7 +20,7 @@ function showList(deps, which, index, notice) {
|
|
|
21
20
|
return { type: 'listShown', which, rows: rows.data, index, ...(notice && { notice }) };
|
|
22
21
|
}
|
|
23
22
|
// Intents that read or write the DB. All synchronous, so each returns the message to dispatch.
|
|
24
|
-
function perform(intent, deps, active) {
|
|
23
|
+
function perform(intent, deps, { active, saved: picks }) {
|
|
25
24
|
switch (intent.type) {
|
|
26
25
|
case 'openList':
|
|
27
26
|
return showList(deps, intent.which, intent.index);
|
|
@@ -37,14 +36,16 @@ function perform(intent, deps, active) {
|
|
|
37
36
|
? { type: 'entryOpened', entry: row.data, answer: answer.data, origin }
|
|
38
37
|
: { type: 'openFailed', query: row.data.query_text, detail: answer.error, origin };
|
|
39
38
|
}
|
|
40
|
-
// A pick holds for this session even when it can't be saved for the next one.
|
|
39
|
+
// A pick holds for this session even when it can't be saved for the next one. Only picks are
|
|
40
|
+
// written: update() folds the same pick into Model.saved.
|
|
41
41
|
case 'pickModel': {
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
if (!active)
|
|
43
|
+
return { type: 'modelPicked', model: intent.model };
|
|
44
|
+
const saved = deps.saveSettings(pickedModel(picks, active.route, intent.model));
|
|
44
45
|
return { type: 'modelPicked', model: intent.model, ...(!saved.ok && { notice: TUI.settingsSaveFailed(saved.error) }) };
|
|
45
46
|
}
|
|
46
47
|
case 'pickRoute': {
|
|
47
|
-
const saved = deps.saveSettings(
|
|
48
|
+
const saved = deps.saveSettings(pickedRoute(picks, intent.route));
|
|
48
49
|
return { type: 'routePicked', route: intent.route, ...(!saved.ok && { notice: TUI.settingsSaveFailed(saved.error) }) };
|
|
49
50
|
}
|
|
50
51
|
case 'toggleSave': {
|
|
@@ -60,7 +61,7 @@ function perform(intent, deps, active) {
|
|
|
60
61
|
// (asking the model, reading lists, flipping the saved flag) happen here.
|
|
61
62
|
export function App({ config, paths, routes, saved, pinned, deps }) {
|
|
62
63
|
const { exit } = useApp();
|
|
63
|
-
const [model, dispatch] = useReducer(update, undefined, () => init(config, { routes,
|
|
64
|
+
const [model, dispatch] = useReducer(update, undefined, () => init(config, { routes, saved }));
|
|
64
65
|
const { view } = model;
|
|
65
66
|
useInput((input, key) => {
|
|
66
67
|
const intent = intentFor(view, input, key);
|
|
@@ -75,7 +76,7 @@ export function App({ config, paths, routes, saved, pinned, deps }) {
|
|
|
75
76
|
intent.type === 'pickModel' ||
|
|
76
77
|
intent.type === 'pickRoute') {
|
|
77
78
|
if (deps)
|
|
78
|
-
dispatch(perform(intent, deps, model
|
|
79
|
+
dispatch(perform(intent, deps, model));
|
|
79
80
|
}
|
|
80
81
|
else {
|
|
81
82
|
dispatch(intent);
|
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,EAA6B,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,GAAG,EAAkB,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -7,17 +7,22 @@ import { createAsk } from './lib/ask.js';
|
|
|
7
7
|
import { keyFor, resolveConfig, routesWithKeys } from './lib/config.js';
|
|
8
8
|
import { openDb } from './lib/db.js';
|
|
9
9
|
import { lookup } from './lib/lookup.js';
|
|
10
|
-
import { CLI, configProblemText, failureText, HELP, retryText, TUI } from './lib/messages.js';
|
|
10
|
+
import { CLI, configProblemText, failureText, HELP, keyNotSet, retryText, TUI } from './lib/messages.js';
|
|
11
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
13
|
import { readSettings, writeSettings } from './lib/settings.js';
|
|
14
|
-
import { startTracing } from './lib/tracing.js';
|
|
15
|
-
import { EXIT, messageOf } from './lib/types.js';
|
|
14
|
+
import { lazyTracing, startTracing } from './lib/tracing.js';
|
|
15
|
+
import { err, EXIT, messageOf } from './lib/types.js';
|
|
16
16
|
const out = (text) => process.stdout.write(`${text}\n`);
|
|
17
17
|
const warn = (text) => process.stderr.write(`${text}\n`);
|
|
18
|
-
|
|
18
|
+
// A model call with tracing up before it goes out. Tracing starts here, on the first real call.
|
|
19
|
+
const traced = (ask, tracing) => async (query) => {
|
|
20
|
+
await tracing.start();
|
|
21
|
+
return ask(query);
|
|
22
|
+
};
|
|
23
|
+
const depsFor = (config, db, tracing) => ({
|
|
19
24
|
db,
|
|
20
|
-
ask: createAsk(config),
|
|
25
|
+
ask: traced(createAsk(config), tracing),
|
|
21
26
|
sleep: (ms) => sleep(ms),
|
|
22
27
|
now: () => new Date(),
|
|
23
28
|
newId: () => nanoid(),
|
|
@@ -46,13 +51,13 @@ async function main(argv) {
|
|
|
46
51
|
if (!settings.ok)
|
|
47
52
|
warn(CLI.settingsIgnored(SETTINGS_PATH, settings.error));
|
|
48
53
|
const saved = settings.ok ? settings.data : {};
|
|
49
|
-
// On only where this machine's .env holds Langfuse keys.
|
|
50
|
-
const tracing =
|
|
54
|
+
// On only where this machine's .env holds Langfuse keys, and not before a model is called.
|
|
55
|
+
const tracing = lazyTracing(() => startTracing(process.env, packageVersion(), (detail) => warn(CLI.tracingOff(detail))));
|
|
51
56
|
if (command.data.mode === 'tui')
|
|
52
57
|
return runTui(resolveConfig(process.env, undefined, saved), saved, tracing);
|
|
53
58
|
let code = EXIT.unexpected;
|
|
54
59
|
try {
|
|
55
|
-
code = await runOneShot(command.data, resolveConfig(process.env, command.data.model, saved));
|
|
60
|
+
code = await runOneShot(command.data, resolveConfig(process.env, command.data.model, saved), tracing);
|
|
56
61
|
}
|
|
57
62
|
catch (e) {
|
|
58
63
|
warn(CLI.unknownError(messageOf(e)));
|
|
@@ -63,7 +68,7 @@ async function main(argv) {
|
|
|
63
68
|
process.exit(code);
|
|
64
69
|
return code;
|
|
65
70
|
}
|
|
66
|
-
async function runOneShot({ query, fresh, json, model }, config) {
|
|
71
|
+
async function runOneShot({ query, fresh, json, model }, config, tracing) {
|
|
67
72
|
if (!config.ok) {
|
|
68
73
|
warn(configProblemText(config.error, ENV_PATH));
|
|
69
74
|
return EXIT.noKey;
|
|
@@ -76,7 +81,7 @@ async function runOneShot({ query, fresh, json, model }, config) {
|
|
|
76
81
|
try {
|
|
77
82
|
const result = await lookup(
|
|
78
83
|
// An explicit --model asks to hear from that model, so it never settles for a stored answer.
|
|
79
|
-
{ query, route: config.data.route, model: config.data.model, fresh: fresh || model !== undefined }, { ...depsFor(config.data, db.data), onRetry: (event) => warn(`${retryText(event)} (${event.detail})`) });
|
|
84
|
+
{ query, route: config.data.route, model: config.data.model, fresh: fresh || model !== undefined }, { ...depsFor(config.data, db.data, tracing), onRetry: (event) => warn(`${retryText(event)} (${event.detail})`) });
|
|
80
85
|
if (!result.ok) {
|
|
81
86
|
warn(failureText(result.error, config.data, query));
|
|
82
87
|
return result.error.reason === 'unexpected' ? EXIT.unexpected : EXIT.provider;
|
|
@@ -103,9 +108,15 @@ async function runTui(config, saved, tracing) {
|
|
|
103
108
|
const [{ render }, { createElement }, { App }] = await Promise.all([import('ink'), import('react'), import('./app.js')]);
|
|
104
109
|
const deps = config.ok && db?.ok
|
|
105
110
|
? {
|
|
106
|
-
...depsFor(config.data, db.data),
|
|
107
|
-
// The picker only offers routes that have a key
|
|
108
|
-
|
|
111
|
+
...depsFor(config.data, db.data, tracing),
|
|
112
|
+
// The picker only offers routes that have a key. Should one be missing anyway, the lookup
|
|
113
|
+
// fails here: one provider's key is never sent to another.
|
|
114
|
+
askFor: (route, model) => {
|
|
115
|
+
const apiKey = keyFor(process.env, route);
|
|
116
|
+
if (!apiKey)
|
|
117
|
+
return async () => err({ reason: 'invalid-key', detail: keyNotSet(route) });
|
|
118
|
+
return traced(createAsk({ route, model, apiKey }), tracing);
|
|
119
|
+
},
|
|
109
120
|
saveSettings: (settings) => writeSettings(SETTINGS_PATH, settings),
|
|
110
121
|
}
|
|
111
122
|
: undefined;
|
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,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,MAAM,EAAW,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,20 +8,24 @@ import { GutterLine } from './gutter-line.js';
|
|
|
8
8
|
// A gutter row set in from the sense it belongs to. Padding, not spaces, so wrapped text stays aligned.
|
|
9
9
|
const Indented = ({ by = 2, children }) => (_jsx(GutterLine, { children: _jsx(Box, { paddingLeft: by, children: children }) }));
|
|
10
10
|
const Star = ({ saved }) => (saved ? _jsx(Text, { color: C.green, children: " \u2605" }) : null);
|
|
11
|
-
// The full answer for the TUI. Like the plain-text renderer, each kind reads only its own fields
|
|
11
|
+
// The full answer for the TUI. Like the plain-text renderer, each kind reads only its own fields
|
|
12
|
+
// (a word-check on a real word also reads the meaning ones).
|
|
12
13
|
export function AnswerView({ answer, query, saved }) {
|
|
13
14
|
const term = displayTerm(answer, query);
|
|
14
15
|
switch (answer.kind) {
|
|
15
16
|
case 'word-check':
|
|
16
|
-
return (_jsxs(_Fragment, { children: [_jsxs(GutterLine, { children: [_jsx(Text, { color: C.label, bold: true, children: term }), _jsx(Text, { color: C.overlay1, children: " \u2014 " }), _jsx(Text, { color: answer.isWord ? C.green : C.red, children: answer.isWord ? TUI.isWord : TUI.notWord }), _jsx(Star, { saved: saved })] }), answer.verdictVi && (_jsx(GutterLine, { children: _jsx(Text, { color: C.label, children: answer.verdictVi }) })),
|
|
17
|
-
(answer.suggestions ?? []).map((s) => (_jsx(GutterLine, { children: _jsxs(Text, { color: C.label, children: [_jsxs(Text, { color: C.green, children: ["\u2192 ", s.term] }), ": ", s.reasonVi] }) }, s.term)))] }));
|
|
17
|
+
return (_jsxs(_Fragment, { children: [_jsxs(GutterLine, { children: [_jsx(Text, { color: C.label, bold: true, children: term }), _jsx(Text, { color: C.overlay1, children: " \u2014 " }), _jsx(Text, { color: answer.isWord ? C.green : C.red, children: answer.isWord ? TUI.isWord : TUI.notWord }), _jsx(Star, { saved: saved })] }), answer.verdictVi && (_jsx(GutterLine, { children: _jsx(Text, { color: C.label, children: answer.verdictVi }) })), answer.isWord ? (_jsx(Senses, { answer: answer })) : ((answer.suggestions ?? []).map((s) => (_jsx(GutterLine, { children: _jsxs(Text, { color: C.label, children: [_jsxs(Text, { color: C.green, children: ["\u2192 ", s.term] }), ": ", s.reasonVi] }) }, s.term))))] }));
|
|
18
18
|
case 'meaning':
|
|
19
|
-
return (_jsxs(_Fragment, { children: [_jsxs(GutterLine, { children: [_jsx(Text, { color: C.label, bold: true, children: term }), _jsx(Star, { saved: saved })] }),
|
|
19
|
+
return (_jsxs(_Fragment, { children: [_jsxs(GutterLine, { children: [_jsx(Text, { color: C.label, bold: true, children: term }), _jsx(Star, { saved: saved })] }), _jsx(Senses, { answer: answer })] }));
|
|
20
20
|
case 'interpretation':
|
|
21
21
|
return (_jsxs(_Fragment, { children: [_jsxs(GutterLine, { children: [_jsxs(Text, { color: C.overlay1, children: ["\"", (answer.subject ?? query).trim().replace(/\s*\n\s*/g, ' / '), "\""] }), _jsx(Star, { saved: saved })] }), _jsx(GutterLine, {}), _jsx(GutterLine, { children: _jsx(Text, { color: C.label, children: (answer.explanationVi ?? '').trim() }) }), (answer.nuances ?? []).map((nuance) => (_jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: ["\u2022 ", nuance] }) }, nuance)))] }));
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
+
// IPA and every sense: the meaning view, and a word-check on a real word.
|
|
25
|
+
function Senses({ answer }) {
|
|
26
|
+
return (_jsxs(_Fragment, { children: [answer.ipa && (_jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: ["/", bareIpa(answer.ipa), "/"] }) })), (answer.entries ?? []).map((entry, index) => (_jsx(EntryLines, { entry: entry }, index)))] }));
|
|
27
|
+
}
|
|
24
28
|
function EntryLines({ entry }) {
|
|
25
|
-
return (_jsxs(_Fragment, { children: [_jsx(GutterLine, {}), _jsx(GutterLine, { children: _jsxs(Text, { color: C.label, children: [_jsxs(Text, { color: C.sapphire, children: ["[", entry.partOfSpeech, entry.register ? ` · ${entry.register}` : '', "]"] }), ' ', entry.glossVi] }) }), entry.synonyms.length > 0 && (_jsx(Indented, { children: _jsxs(Text, { color: C.overlay1, children: ["\u2248 ", entry.synonyms.join(', ')] }) })), entry.examples.map((example) => (_jsxs(Fragment, { children: [_jsx(Indented, { children: _jsxs(Text, { color: C.label, children: ["\"", example.text, "\""] }) }), _jsx(Indented, { by: 3, children: _jsxs(Text, { color: C.overlay1, children: ["\u2014 ", example.glossVi] }) })] }, example.text)))] }));
|
|
29
|
+
return (_jsxs(_Fragment, { children: [_jsx(GutterLine, {}), _jsx(GutterLine, { children: _jsxs(Text, { color: C.label, children: [_jsxs(Text, { color: C.sapphire, children: ["[", entry.partOfSpeech, entry.register ? ` · ${entry.register}` : '', "]"] }), ' ', entry.glossVi] }) }), entry.synonyms.length > 0 && (_jsx(Indented, { children: _jsxs(Text, { color: C.overlay1, children: ["\u2248 ", entry.synonyms.join(', ')] }) })), entry.antonyms.length > 0 && (_jsx(Indented, { children: _jsxs(Text, { color: C.overlay1, children: ["\u2260 ", entry.antonyms.join(', ')] }) })), entry.examples.map((example) => (_jsxs(Fragment, { children: [_jsx(Indented, { children: _jsxs(Text, { color: C.label, children: ["\"", example.text, "\""] }) }), _jsx(Indented, { by: 3, children: _jsxs(Text, { color: C.overlay1, children: ["\u2014 ", example.glossVi] }) })] }, example.text)))] }));
|
|
26
30
|
}
|
|
27
31
|
//# sourceMappingURL=answer-view.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"answer-view.js","sourceRoot":"","sources":["../../src/components/answer-view.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAe,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,wGAAwG;AACxG,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAwC,EAAE,EAAE,CAAC,CAC/E,KAAC,UAAU,cACT,KAAC,GAAG,IAAC,WAAW,EAAE,EAAE,YAAG,QAAQ,GAAO,GAC3B,CACd,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,EAAsB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,wBAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAEjG,
|
|
1
|
+
{"version":3,"file":"answer-view.js","sourceRoot":"","sources":["../../src/components/answer-view.tsx"],"names":[],"mappings":"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"}
|
package/dist/lib/ask.js
CHANGED
|
@@ -18,7 +18,8 @@ const SYSTEM = [
|
|
|
18
18
|
'- meaning: asking what a word/phrase/idiom means.',
|
|
19
19
|
'- interpretation: asking how to understand a specific passage, joke, or sentence in context.',
|
|
20
20
|
'All *Vi fields must be in Vietnamese. Keep quoted English inside examples/nuances as-is. Be concise; dictionary register, not chatty.',
|
|
21
|
-
'
|
|
21
|
+
'For word-check: when the word IS valid, also fill ipa and entries exactly as for meaning; when it is not, ipa and entries are null.',
|
|
22
|
+
'Rules: suggestions is empty when the word IS valid. synonyms and antonyms must never include the term itself; leave them empty when none fit. subject must quote the interpreted text verbatim. Fields not used by the chosen kind are null.',
|
|
22
23
|
].join('\n');
|
|
23
24
|
function modelFor({ route, model, apiKey }) {
|
|
24
25
|
if (route === 'openai')
|
package/dist/lib/ask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/lib/ask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,YAAY,CAAC;AAElD,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,6EAA6E;AAC7E,MAAM,MAAM,GAAG;IACb,4DAA4D;IAC5D,mHAAmH;IACnH,8CAA8C;IAC9C,kGAAkG;IAClG,mDAAmD;IACnD,8FAA8F;IAC9F,uIAAuI;IACvI,
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/lib/ask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,YAAY,CAAC;AAElD,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,6EAA6E;AAC7E,MAAM,MAAM,GAAG;IACb,4DAA4D;IAC5D,mHAAmH;IACnH,8CAA8C;IAC9C,kGAAkG;IAClG,mDAAmD;IACnD,8FAA8F;IAC9F,uIAAuI;IACvI,qIAAqI;IACrI,8OAA8O;CAC/O,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,SAAS,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAU;IAChD,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/D,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,iGAAiG;IACjG,+DAA+D;IAC/D,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1D,iGAAiG;IACjG,wGAAwG;IACxG,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC;gBACpC,KAAK;gBACL,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,KAAK;gBACb,eAAe,EAAE,iBAAiB;gBAClC,UAAU,EAAE,CAAC;gBACb,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;gBACjD,mFAAmF;gBACnF,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,qBAAqB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;gBACvF,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;aAC3C,CAAC,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -3,7 +3,9 @@ import { type Config, type ConfigProblem, type Result, type Route } from './type
|
|
|
3
3
|
export declare const DEFAULT_MODEL: Record<Route, string>;
|
|
4
4
|
export declare const MODEL_CHOICES: Record<Route, readonly string[]>;
|
|
5
5
|
type Env = Record<string, string | undefined>;
|
|
6
|
+
export declare function routeOfId(id: string): Route | undefined;
|
|
6
7
|
export declare function checkModel(route: Route, id: string): Result<string, ConfigProblem>;
|
|
8
|
+
export declare function modelOn(route: Route, saved: Settings): string;
|
|
7
9
|
export declare const keyFor: (env: Env, route: Route) => string | undefined;
|
|
8
10
|
export declare const routesWithKeys: (env: Env) => Route[];
|
|
9
11
|
export declare function resolveConfig(env: Env, modelFlag?: string, saved?: Settings): Result<Config, ConfigProblem>;
|
package/dist/lib/config.js
CHANGED
|
@@ -18,21 +18,34 @@ const KEY_VAR = {
|
|
|
18
18
|
const FIREWORKS_MODELS = 'accounts/fireworks/models/';
|
|
19
19
|
const read = (env, name) => env[name]?.trim() || undefined;
|
|
20
20
|
const isRoute = (value) => ROUTES.includes(value);
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
// Whose id this is, going by its shape: `accounts/…` is how Fireworks names its models and
|
|
22
|
+
// routers, any other slash id is OpenRouter's, and a bare name belongs to no route in particular.
|
|
23
|
+
export function routeOfId(id) {
|
|
24
|
+
const model = id.trim();
|
|
25
|
+
if (model.startsWith('accounts/'))
|
|
26
|
+
return 'fireworks';
|
|
27
|
+
return model.includes('/') ? 'openrouter' : undefined;
|
|
28
|
+
}
|
|
29
|
+
// A model id as the route will serve it. An id shaped for another route is refused. A bare name
|
|
30
|
+
// resolves on whichever route is active: on OpenRouter it means OpenAI's model of that name, on
|
|
31
|
+
// Fireworks the model of that name in Fireworks' own account.
|
|
25
32
|
export function checkModel(route, id) {
|
|
26
33
|
const model = id.trim();
|
|
27
|
-
const
|
|
28
|
-
if (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
const owner = routeOfId(model);
|
|
35
|
+
if (owner && owner !== route)
|
|
36
|
+
return err({ code: 'model-not-on-route', route, model });
|
|
37
|
+
if (owner)
|
|
38
|
+
return ok(model);
|
|
39
|
+
if (route === 'fireworks')
|
|
40
|
+
return ok(`${FIREWORKS_MODELS}${model}`);
|
|
41
|
+
return ok(route === 'openrouter' ? `openai/${model}` : model);
|
|
42
|
+
}
|
|
43
|
+
// The model a route runs when nobody names one: the pick saved for it, or its default when there
|
|
44
|
+
// is no pick or the route can't serve it.
|
|
45
|
+
export function modelOn(route, saved) {
|
|
46
|
+
const id = saved.models?.[route]?.trim();
|
|
47
|
+
const remembered = id ? checkModel(route, id) : undefined;
|
|
48
|
+
return remembered?.ok ? remembered.data : DEFAULT_MODEL[route];
|
|
36
49
|
}
|
|
37
50
|
export const keyFor = (env, route) => read(env, KEY_VAR[route]);
|
|
38
51
|
// The routes a lookup could go to right now, in auto-detect order.
|
|
@@ -42,6 +55,8 @@ export const routesWithKeys = (env) => ROUTES.filter((route) => keyFor(env, rout
|
|
|
42
55
|
// Which model wins: the one-shot --model, then B3_DICT_MODEL, then the model picked in the TUI for
|
|
43
56
|
// that route (saved), then the route's default. Saved choices the keys or the route can't serve
|
|
44
57
|
// are skipped, not errors: the user didn't ask for them on this run.
|
|
58
|
+
// A model named on this run and a route nobody forced: when the route can't serve the id, the
|
|
59
|
+
// lookup goes to the first keyed route that can, since the id says where it belongs.
|
|
45
60
|
export function resolveConfig(env, modelFlag, saved = {}) {
|
|
46
61
|
const [detected] = routesWithKeys(env);
|
|
47
62
|
if (!detected)
|
|
@@ -55,12 +70,14 @@ export function resolveConfig(env, modelFlag, saved = {}) {
|
|
|
55
70
|
if (!apiKey)
|
|
56
71
|
return err({ code: 'route-key-missing', route });
|
|
57
72
|
const requested = modelFlag?.trim() || read(env, 'B3_DICT_MODEL');
|
|
58
|
-
if (requested)
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
73
|
+
if (!requested)
|
|
74
|
+
return ok({ route, apiKey, model: modelOn(route, saved) });
|
|
75
|
+
const model = checkModel(route, requested);
|
|
76
|
+
if (model.ok)
|
|
77
|
+
return ok({ route, apiKey, model: model.data });
|
|
78
|
+
const owner = forced ? undefined : routeOfId(requested);
|
|
79
|
+
const ownerKey = owner && keyFor(env, owner);
|
|
80
|
+
return owner && ownerKey ? ok({ route: owner, apiKey: ownerKey, model: requested }) : model;
|
|
64
81
|
}
|
|
65
82
|
export const keyVarFor = (route) => KEY_VAR[route];
|
|
66
83
|
//# 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":"AACA,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;IACpB,SAAS,EAAE,sCAAsC;CAClD,CAAC;AAEF,2FAA2F;AAC3F,MAAM,CAAC,MAAM,aAAa,GAAqC;IAC7D,UAAU,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,kCAAkC,EAAE,cAAc,EAAE,mBAAmB,CAAC;IAC/G,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,SAAS,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,+CAA+C,EAAE,mCAAmC,CAAC;CAC3H,CAAC;AAEF,MAAM,OAAO,GAA0B;IACrC,UAAU,EAAE,oBAAoB;IAChC,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,mBAAmB;CAC/B,CAAC;AAEF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AAItD,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/envelope.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export declare const AnswerEnvelope: z.ZodObject<{
|
|
|
25
25
|
glossVi: z.ZodString;
|
|
26
26
|
}, z.core.$strip>>;
|
|
27
27
|
synonyms: z.ZodArray<z.ZodString>;
|
|
28
|
+
antonyms: z.ZodArray<z.ZodString>;
|
|
28
29
|
}, z.core.$strip>>>;
|
|
29
30
|
subject: z.ZodNullable<z.ZodString>;
|
|
30
31
|
explanationVi: z.ZodNullable<z.ZodString>;
|
package/dist/lib/envelope.js
CHANGED
|
@@ -16,7 +16,7 @@ export const AnswerEnvelope = z.object({
|
|
|
16
16
|
}))
|
|
17
17
|
.max(3)
|
|
18
18
|
.nullable(),
|
|
19
|
-
// meaning
|
|
19
|
+
// meaning; also word-check when isWord is true
|
|
20
20
|
ipa: z.string().nullable(),
|
|
21
21
|
entries: z
|
|
22
22
|
.array(z.object({
|
|
@@ -30,6 +30,7 @@ export const AnswerEnvelope = z.object({
|
|
|
30
30
|
}))
|
|
31
31
|
.max(2),
|
|
32
32
|
synonyms: z.array(z.string()).max(4),
|
|
33
|
+
antonyms: z.array(z.string()).max(4),
|
|
33
34
|
}))
|
|
34
35
|
.max(3)
|
|
35
36
|
.nullable(),
|
|
@@ -62,9 +63,17 @@ export function checkContent(a) {
|
|
|
62
63
|
export const displayTerm = (answer, query) => answer.term?.trim() || query.trim();
|
|
63
64
|
// Models send IPA with or without slashes; renderers add their own.
|
|
64
65
|
export const bareIpa = (ipa) => ipa.replace(/^\/|\/$/g, '');
|
|
66
|
+
// Rows stored before antonyms existed have entries without antonyms. The model's schema keeps the field
|
|
67
|
+
// required (OpenAI strict mode), so the default goes in here, not on the schema.
|
|
68
|
+
function withAntonyms(raw) {
|
|
69
|
+
if (typeof raw !== 'object' || raw === null || !('entries' in raw) || !Array.isArray(raw.entries))
|
|
70
|
+
return raw;
|
|
71
|
+
const entries = raw.entries.map((e) => typeof e === 'object' && e !== null && !('antonyms' in e) ? { ...e, antonyms: [] } : e);
|
|
72
|
+
return { ...raw, entries };
|
|
73
|
+
}
|
|
65
74
|
export function parseStored(answerJson) {
|
|
66
75
|
try {
|
|
67
|
-
const parsed = AnswerEnvelope.safeParse(JSON.parse(answerJson));
|
|
76
|
+
const parsed = AnswerEnvelope.safeParse(withAntonyms(JSON.parse(answerJson)));
|
|
68
77
|
return parsed.success ? ok(parsed.data) : err(parsed.error.message);
|
|
69
78
|
}
|
|
70
79
|
catch (e) {
|
package/dist/lib/envelope.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/lib/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAe,MAAM,YAAY,CAAC;AAE7D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,gBAAgB,CAAU,CAAC;AAG1E,2EAA2E;AAC3E,mFAAmF;AACnF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACnB,aAAa;IACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC;SACX,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KAC3E,CAAC,CACH;SACA,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;IACb
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/lib/envelope.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/messages.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { Origin } from './model.js';
|
|
|
2
2
|
import type { RetryEvent } from './policy.js';
|
|
3
3
|
import { type Config, type ConfigProblem, type Failure, type Route } from './types.js';
|
|
4
4
|
export declare const KEY_URL: Record<Route, string>;
|
|
5
|
+
export declare const keyNotSet: (route: Route) => string;
|
|
5
6
|
export declare const HELP = "B3 Dict \u2014 h\u1ECFi v\u1EC1 t\u1EEB, th\u00E0nh ng\u1EEF, c\u00E1ch d\u00F9ng ti\u1EBFng Anh; tr\u1EA3 l\u1EDDi b\u1EB1ng ti\u1EBFng Vi\u1EC7t.\n\nC\u00E1ch d\u00F9ng:\n b3dict m\u1EDF giao di\u1EC7n h\u1ECFi \u0111\u00E1p\n b3dict \"<c\u00E2u h\u1ECFi>\" [tu\u1EF3 ch\u1ECDn] h\u1ECFi m\u1ED9t l\u1EA7n r\u1ED3i tho\u00E1t\n\nV\u00ED d\u1EE5:\n b3dict \"take for granted\"\n b3dict \"Is draggable an English word?\"\n b3dict \"pragmatic\" --model z-ai/glm-4.6\n\nTu\u1EF3 ch\u1ECDn:\n --fresh b\u1ECF qua \u0111\u00E1p \u00E1n \u0111\u00E3 l\u01B0u, h\u1ECFi l\u1EA1i model\n --model <id> d\u00F9ng model n\u00E0y cho m\u1ED9t l\u1EA7n h\u1ECFi (lu\u00F4n h\u1ECFi l\u1EA1i model)\n --json in nguy\u00EAn answer envelope d\u1EA1ng JSON\n -h, --help hi\u1EC7n tr\u1EE3 gi\u00FAp\n -V, --version hi\u1EC7n phi\u00EAn b\u1EA3n\n\nM\u00E3 tho\u00E1t:\n 0 th\u00E0nh c\u00F4ng \u00B7 1 l\u1ED7i kh\u00F4ng r\u00F5 \u00B7 2 l\u1ED7i c\u00E1ch d\u00F9ng\n 3 l\u1ED7i c\u1EA5u h\u00ECnh (key, provider, model) \u00B7 4 l\u1ED7i provider";
|
|
6
7
|
export declare const CLI: {
|
|
7
8
|
readonly unknownOption: (name: string) => string;
|
package/dist/lib/messages.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { keyVarFor } from './config.js';
|
|
1
|
+
import { keyVarFor, routeOfId } from './config.js';
|
|
2
2
|
import { ROUTES } from './types.js';
|
|
3
3
|
// Vietnamese chrome for both surfaces, so they say the same thing. Nothing user-facing lives elsewhere.
|
|
4
4
|
export const KEY_URL = {
|
|
@@ -6,6 +6,16 @@ export const KEY_URL = {
|
|
|
6
6
|
openai: 'https://platform.openai.com/api-keys',
|
|
7
7
|
fireworks: 'https://app.fireworks.ai/settings/users/api-keys',
|
|
8
8
|
};
|
|
9
|
+
const ROUTE_NAME = { openrouter: 'OpenRouter', openai: 'OpenAI', fireworks: 'Fireworks' };
|
|
10
|
+
// What to type on a route when the id given belongs to another one.
|
|
11
|
+
const ID_HINT = {
|
|
12
|
+
openrouter: 'Dùng id của OpenRouter như z-ai/glm-4.6.',
|
|
13
|
+
openai: 'Dùng tên model của OpenAI như gpt-5-mini.',
|
|
14
|
+
fireworks: 'Dùng tên trần như minimax-m3, hoặc id đầy đủ bắt đầu bằng accounts/.',
|
|
15
|
+
};
|
|
16
|
+
// An id is only ever refused for its shape, so its owner is known; OpenRouter is the fallback.
|
|
17
|
+
const ownerOf = (model) => routeOfId(model) ?? 'openrouter';
|
|
18
|
+
export const keyNotSet = (route) => `chưa có ${keyVarFor(route)}`;
|
|
9
19
|
export const HELP = `B3 Dict — hỏi về từ, thành ngữ, cách dùng tiếng Anh; trả lời bằng tiếng Việt.
|
|
10
20
|
|
|
11
21
|
Cách dùng:
|
|
@@ -86,9 +96,7 @@ export const TUI = {
|
|
|
86
96
|
customExample: (route) => route === 'fireworks'
|
|
87
97
|
? 'Tên model trên Fireworks, ví dụ deepseek-v4p1-flash. Id đầy đủ bắt đầu bằng accounts/ cũng được.'
|
|
88
98
|
: 'Id trên OpenRouter, ví dụ z-ai/glm-4.6. Tên trần như gpt-5-nano là model của OpenAI.',
|
|
89
|
-
customRejected: (route, model) => route
|
|
90
|
-
? `✗ ${model} không phải id của Fireworks. Dùng tên trần như minimax-m3, hoặc id đầy đủ bắt đầu bằng accounts/.`
|
|
91
|
-
: `✗ ${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.`,
|
|
99
|
+
customRejected: (route, model) => `✗ ${model} là id của ${ROUTE_NAME[ownerOf(model)]}, mà b3dict đang chạy route ${ROUTE_NAME[route]}. ${ID_HINT[route]}`,
|
|
92
100
|
pinned: (name, value) => `${name}=${value} đang đặt, nên lần mở sau b3dict vẫn dùng ${value}.`,
|
|
93
101
|
providerLabel: 'Provider',
|
|
94
102
|
pickerHints: '↑↓ chọn · enter dùng · esc về home · q thoát',
|
|
@@ -170,17 +178,14 @@ hoặc bỏ B3_DICT_PROVIDER để tự chọn route theo key đang có.`;
|
|
|
170
178
|
return `✗ B3_DICT_PROVIDER=${problem.value} không hợp lệ
|
|
171
179
|
|
|
172
180
|
Chỉ nhận: ${ROUTES.join(', ')}.`;
|
|
173
|
-
case 'model-not-on-route':
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
Trên Fireworks, dùng tên trần như minimax-m3 hoặc id đầy đủ bắt đầu bằng accounts/.
|
|
178
|
-
Id kiểu ${problem.model} là của OpenRouter: đặt B3_DICT_PROVIDER=openrouter để dùng nó.`;
|
|
179
|
-
}
|
|
180
|
-
return `✗ Model ${problem.model} cần route OpenRouter
|
|
181
|
+
case 'model-not-on-route': {
|
|
182
|
+
const owner = ownerOf(problem.model);
|
|
183
|
+
return `✗ Model ${problem.model} không chạy được trên route ${problem.route}
|
|
181
184
|
|
|
182
|
-
|
|
183
|
-
(tạo key: ${KEY_URL
|
|
185
|
+
${problem.model} là id của ${ROUTE_NAME[owner]}. Nó cần ${keyVarFor(owner)} trong ${envPath}
|
|
186
|
+
(tạo key: ${KEY_URL[owner]}), và B3_DICT_PROVIDER không được ép sang route khác.
|
|
187
|
+
Muốn ở lại route ${problem.route}: ${ID_HINT[problem.route].replace(/^D/, 'd')}`;
|
|
188
|
+
}
|
|
184
189
|
}
|
|
185
190
|
}
|
|
186
191
|
export function failureText(failure, config, query) {
|
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;
|
|
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,6 +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 { Settings } from './settings.js';
|
|
5
6
|
import type { Config, ConfigProblem, Failure, Route } from './types.js';
|
|
6
7
|
export type Draft = {
|
|
7
8
|
text: string;
|
|
@@ -69,6 +70,7 @@ export type Active = {
|
|
|
69
70
|
export type Model = {
|
|
70
71
|
requests: number;
|
|
71
72
|
active?: Active;
|
|
73
|
+
saved: Settings;
|
|
72
74
|
view: View;
|
|
73
75
|
};
|
|
74
76
|
export type Msg = {
|
|
@@ -178,7 +180,7 @@ export type Intent = Msg | {
|
|
|
178
180
|
export type Key = Partial<Record<'return' | 'escape' | 'backspace' | 'delete' | 'leftArrow' | 'rightArrow' | 'upArrow' | 'downArrow' | 'ctrl' | 'meta', boolean>>;
|
|
179
181
|
type Choices = {
|
|
180
182
|
routes?: Route[];
|
|
181
|
-
|
|
183
|
+
saved?: Settings;
|
|
182
184
|
};
|
|
183
185
|
export declare function init(config: {
|
|
184
186
|
ok: true;
|
|
@@ -186,7 +188,9 @@ export declare function init(config: {
|
|
|
186
188
|
} | {
|
|
187
189
|
ok: false;
|
|
188
190
|
error: ConfigProblem;
|
|
189
|
-
}, { routes,
|
|
191
|
+
}, { routes, saved }?: Choices): Model;
|
|
192
|
+
export declare const pickedModel: (saved: Settings, route: Route, model: string) => Settings;
|
|
193
|
+
export declare const pickedRoute: (saved: Settings, route: Route) => Settings;
|
|
190
194
|
export declare function update(model: Model, msg: Msg): Model;
|
|
191
195
|
export declare function intentFor(view: View, input: string, key: Key): Intent | null;
|
|
192
196
|
export {};
|
package/dist/lib/model.js
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
|
-
import { checkModel,
|
|
1
|
+
import { checkModel, MODEL_CHOICES, modelOn } from './config.js';
|
|
2
2
|
const FOCUS_ORDER = ['input', 'history', 'wordbook', 'model', 'help'];
|
|
3
3
|
const EMPTY_DRAFT = { text: '', cursor: 0 };
|
|
4
4
|
const HOME = { screen: 'home', draft: EMPTY_DRAFT, focus: 'input' };
|
|
5
|
-
export function init(config, { routes,
|
|
5
|
+
export function init(config, { routes, saved = {} } = {}) {
|
|
6
6
|
if (!config.ok)
|
|
7
|
-
return { requests: 0, view: { screen: 'setup', problem: config.error } };
|
|
7
|
+
return { requests: 0, saved, view: { screen: 'setup', problem: config.error } };
|
|
8
8
|
const { route, model } = config.data;
|
|
9
|
-
return { requests: 0, active: { route, model, routes: routes ?? [route], models: {
|
|
9
|
+
return { requests: 0, active: { route, model, routes: routes ?? [route], models: { [route]: model } }, saved, view: HOME };
|
|
10
10
|
}
|
|
11
|
+
// Settings after a pick. A model pick leaves the saved route alone: the route in use may be one
|
|
12
|
+
// B3_DICT_PROVIDER forced for this run.
|
|
13
|
+
export const pickedModel = (saved, route, model) => ({
|
|
14
|
+
...saved,
|
|
15
|
+
models: { ...saved.models, [route]: model },
|
|
16
|
+
});
|
|
17
|
+
export const pickedRoute = (saved, route) => ({ ...saved, route });
|
|
11
18
|
// A paste arrives as one chunk: keep its line breaks, drop anything that isn't text.
|
|
12
19
|
const clean = (text) => text
|
|
13
20
|
.replace(/\r\n?/g, '\n')
|
|
@@ -125,6 +132,7 @@ export function update(model, msg) {
|
|
|
125
132
|
return {
|
|
126
133
|
...model,
|
|
127
134
|
active: { ...model.active, model: msg.model, models: { ...models, [route]: msg.model } },
|
|
135
|
+
saved: pickedModel(model.saved, route, msg.model),
|
|
128
136
|
view: { ...HOME, focus: 'model', ...(msg.notice && { notice: msg.notice }) },
|
|
129
137
|
};
|
|
130
138
|
}
|
|
@@ -132,9 +140,10 @@ export function update(model, msg) {
|
|
|
132
140
|
if (!model.active)
|
|
133
141
|
return model;
|
|
134
142
|
// The picker stays open on the Provider row, now listing the new route's models.
|
|
135
|
-
const active = { ...model.active, route: msg.route, model: model.active.models[msg.route] ??
|
|
143
|
+
const active = { ...model.active, route: msg.route, model: model.active.models[msg.route] ?? modelOn(msg.route, model.saved) };
|
|
136
144
|
const next = picker(active, true);
|
|
137
|
-
|
|
145
|
+
const view = msg.notice && next.screen === 'model' ? { ...next, notice: msg.notice } : next;
|
|
146
|
+
return { ...model, active, saved: pickedRoute(model.saved, msg.route), view };
|
|
138
147
|
}
|
|
139
148
|
case 'helpShown':
|
|
140
149
|
return view.screen === 'home' ? to({ screen: 'help' }) : model;
|
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/render-text.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { bareIpa, displayTerm } from './envelope.js';
|
|
2
2
|
import { TUI } from './messages.js';
|
|
3
3
|
// Plain text for the one-shot CLI: no ANSI, safe to pipe. Each branch reads only its own kind's
|
|
4
|
-
// fields, because loose models fill in
|
|
4
|
+
// fields (a word-check on a real word also reads the meaning ones), because loose models fill in
|
|
5
|
+
// the others too.
|
|
5
6
|
export function renderText(answer, query) {
|
|
6
7
|
const term = displayTerm(answer, query);
|
|
7
8
|
switch (answer.kind) {
|
|
@@ -9,7 +10,12 @@ export function renderText(answer, query) {
|
|
|
9
10
|
const lines = [`${term} — ${answer.isWord ? TUI.isWord : TUI.notWord}`];
|
|
10
11
|
if (answer.verdictVi)
|
|
11
12
|
lines.push(answer.verdictVi);
|
|
12
|
-
if (
|
|
13
|
+
if (answer.isWord) {
|
|
14
|
+
if (answer.ipa)
|
|
15
|
+
lines.push(`/${bareIpa(answer.ipa)}/`);
|
|
16
|
+
lines.push(...senseLines(answer));
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
13
19
|
for (const s of answer.suggestions ?? [])
|
|
14
20
|
lines.push(`→ ${s.term}: ${s.reasonVi}`);
|
|
15
21
|
}
|
|
@@ -17,12 +23,20 @@ export function renderText(answer, query) {
|
|
|
17
23
|
}
|
|
18
24
|
case 'meaning': {
|
|
19
25
|
const lines = [answer.ipa ? `${term} /${bareIpa(answer.ipa)}/` : term];
|
|
20
|
-
|
|
21
|
-
lines.push(`(${e.partOfSpeech}) ${e.glossVi}`);
|
|
26
|
+
lines.push(...senseLines(answer));
|
|
22
27
|
return lines.join('\n');
|
|
23
28
|
}
|
|
24
29
|
case 'interpretation':
|
|
25
30
|
return (answer.explanationVi ?? '').trim();
|
|
26
31
|
}
|
|
27
32
|
}
|
|
33
|
+
// Each sense in full: part of speech and register, then the thesaurus, then the examples.
|
|
34
|
+
function senseLines(answer) {
|
|
35
|
+
return (answer.entries ?? []).flatMap((e) => [
|
|
36
|
+
`(${e.partOfSpeech}${e.register ? ` · ${e.register}` : ''}) ${e.glossVi}`,
|
|
37
|
+
...(e.synonyms.length > 0 ? [` ≈ ${e.synonyms.join(', ')}`] : []),
|
|
38
|
+
...(e.antonyms.length > 0 ? [` ≠ ${e.antonyms.join(', ')}`] : []),
|
|
39
|
+
...e.examples.flatMap((x) => [` "${x.text}"`, ` — ${x.glossVi}`]),
|
|
40
|
+
]);
|
|
41
|
+
}
|
|
28
42
|
//# sourceMappingURL=render-text.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-text.js","sourceRoot":"","sources":["../../src/lib/render-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAe,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,gGAAgG;AAChG,
|
|
1
|
+
{"version":3,"file":"render-text.js","sourceRoot":"","sources":["../../src/lib/render-text.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/settings.d.ts
CHANGED
|
@@ -11,8 +11,9 @@ declare const SettingsFile: z.ZodObject<{
|
|
|
11
11
|
openai: "openai";
|
|
12
12
|
fireworks: "fireworks";
|
|
13
13
|
}> & z.core.$partial, z.ZodString>>;
|
|
14
|
+
model: z.ZodOptional<z.ZodString>;
|
|
14
15
|
}, z.core.$strip>;
|
|
15
|
-
export type Settings = z.infer<typeof SettingsFile>;
|
|
16
|
+
export type Settings = Omit<z.infer<typeof SettingsFile>, 'model'>;
|
|
16
17
|
export declare function readSettings(path: string): Result<Settings>;
|
|
17
18
|
export declare function writeSettings(path: string, settings: Settings): Result<void>;
|
|
18
19
|
export {};
|
package/dist/lib/settings.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { dirname } from 'node:path';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { err, messageOf, ok, ROUTES } from './types.js';
|
|
@@ -7,6 +7,8 @@ import { err, messageOf, ok, ROUTES } from './types.js';
|
|
|
7
7
|
const SettingsFile = z.object({
|
|
8
8
|
route: z.enum(ROUTES).optional(),
|
|
9
9
|
models: z.partialRecord(z.enum(ROUTES), z.string()).optional(),
|
|
10
|
+
// 0.2.0 wrote one model and no route. Read, never written.
|
|
11
|
+
model: z.string().optional(),
|
|
10
12
|
});
|
|
11
13
|
// A missing file is no settings. A broken one is an error the caller reports and then ignores.
|
|
12
14
|
export function readSettings(path) {
|
|
@@ -14,19 +16,29 @@ export function readSettings(path) {
|
|
|
14
16
|
return ok({});
|
|
15
17
|
try {
|
|
16
18
|
const parsed = SettingsFile.safeParse(JSON.parse(readFileSync(path, 'utf8')));
|
|
17
|
-
|
|
19
|
+
if (!parsed.success)
|
|
20
|
+
return err(parsed.error.message);
|
|
21
|
+
const { model, ...settings } = parsed.data;
|
|
22
|
+
if (!model || settings.models)
|
|
23
|
+
return ok(settings);
|
|
24
|
+
// In 0.2.0 a slash id could only have been picked on OpenRouter, a bare name only on OpenAI.
|
|
25
|
+
return ok({ ...settings, models: { [model.includes('/') ? 'openrouter' : 'openai']: model } });
|
|
18
26
|
}
|
|
19
27
|
catch (e) {
|
|
20
28
|
return err(messageOf(e));
|
|
21
29
|
}
|
|
22
30
|
}
|
|
31
|
+
// Written beside the file and renamed over it, so a crash mid-write can't leave half a file.
|
|
23
32
|
export function writeSettings(path, settings) {
|
|
33
|
+
const temp = `${path}.${process.pid}.tmp`;
|
|
24
34
|
try {
|
|
25
35
|
mkdirSync(dirname(path), { recursive: true });
|
|
26
|
-
writeFileSync(
|
|
36
|
+
writeFileSync(temp, `${JSON.stringify(settings, null, 2)}\n`);
|
|
37
|
+
renameSync(temp, path);
|
|
27
38
|
return ok(undefined);
|
|
28
39
|
}
|
|
29
40
|
catch (e) {
|
|
41
|
+
rmSync(temp, { force: true });
|
|
30
42
|
return err(messageOf(e));
|
|
31
43
|
}
|
|
32
44
|
}
|
package/dist/lib/settings.js.map
CHANGED
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/lib/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjG,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,EAAe,MAAM,YAAY,CAAC;AAErE,gGAAgG;AAChG,mDAAmD;AACnD,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9D,2DAA2D;IAC3D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAGH,+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,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QAC3C,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;QACnD,6FAA6F;QAC7F,OAAO,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACjG,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAkB;IAC5D,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAC1C,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,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvB,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9B,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
|
package/dist/lib/tracing.d.ts
CHANGED
|
@@ -9,6 +9,9 @@ export type Tracing = {
|
|
|
9
9
|
};
|
|
10
10
|
export declare const FLUSH_CAP_MS = 3000;
|
|
11
11
|
export declare function tracingKeys(env: Env): TracingKeys | undefined;
|
|
12
|
+
export declare function lazyTracing(start: () => Promise<Tracing>): Tracing & {
|
|
13
|
+
start: () => Promise<void>;
|
|
14
|
+
};
|
|
12
15
|
export declare const traceContext: (route: string) => {
|
|
13
16
|
route: string;
|
|
14
17
|
host: string;
|
package/dist/lib/tracing.js
CHANGED
|
@@ -13,6 +13,18 @@ export function tracingKeys(env) {
|
|
|
13
13
|
return undefined;
|
|
14
14
|
return { publicKey, secretKey, baseUrl: read(env, 'LANGFUSE_BASE_URL') };
|
|
15
15
|
}
|
|
16
|
+
// Tracing that starts on the first model call. A cached answer, a config problem or a usage error
|
|
17
|
+
// never asks for it, so those runs don't load OpenTelemetry and have nothing to flush.
|
|
18
|
+
export function lazyTracing(start) {
|
|
19
|
+
let started;
|
|
20
|
+
return {
|
|
21
|
+
start: async () => {
|
|
22
|
+
started ??= start();
|
|
23
|
+
await started;
|
|
24
|
+
},
|
|
25
|
+
flush: async () => (started ? (await started).flush() : true),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
16
28
|
// What every model call carries into its trace, so traces from several machines can be told apart.
|
|
17
29
|
export const traceContext = (route) => ({ route, host: hostname() });
|
|
18
30
|
// Sends each model call to Langfuse as a trace. Tracing never decides how a lookup ends: a setup
|
package/dist/lib/tracing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/lib/tracing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/lib/tracing.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { DEFAULT_MODEL } from '../lib/config.js';
|
|
|
7
7
|
import { TUI } from '../lib/messages.js';
|
|
8
8
|
import { C } from '../lib/theme.js';
|
|
9
9
|
const Muted = ({ children }) => (_jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: children }) }));
|
|
10
|
-
// The model picker: a Provider row when
|
|
10
|
+
// The model picker: a Provider row when more than one route has a key, the route's choices, the model in use,
|
|
11
11
|
// and a box for any other id. `pinned` holds B3_DICT_PROVIDER and B3_DICT_MODEL, which win again on
|
|
12
12
|
// the next run whatever is picked here.
|
|
13
13
|
export function ModelPicker({ view, pinned = {} }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-picker.js","sourceRoot":"","sources":["../../src/screens/model-picker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AAIpC,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,
|
|
1
|
+
{"version":3,"file":"model-picker.js","sourceRoot":"","sources":["../../src/screens/model-picker.tsx"],"names":[],"mappings":"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"}
|