b3-dict 0.4.2 → 0.6.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 CHANGED
@@ -15,6 +15,7 @@ npm link # puts `b3dict` on your PATH
15
15
  b3dict # interactive: type a question, press enter
16
16
  b3dict "take for granted" # one-shot: print the answer and exit
17
17
  b3dict "Is draggable an English word?"
18
+ b3dict "they are your to decide if they are good to go" # check a sentence you wrote
18
19
  b3dict "take for granted" --fresh # skip the stored answer, ask again
19
20
  b3dict "draggable" --json # raw answer envelope
20
21
  ```
@@ -1,27 +1,38 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
3
  import { Fragment } from 'react';
4
- import { bareIpa, displayTerm } from '../lib/envelope.js';
4
+ import { bareIpa, displaySubject, displayTerm } from '../lib/envelope.js';
5
5
  import { TUI } from '../lib/messages.js';
6
6
  import { C } from '../lib/theme.js';
7
7
  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 }) })), !answer.isWord &&
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 })] }), answer.ipa && (_jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: ["/", bareIpa(answer.ipa), "/"] }) })), (answer.entries ?? []).map((entry, index) => (_jsx(EntryLines, { entry: entry }, index)))] }));
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
- 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)))] }));
21
+ return (_jsxs(_Fragment, { children: [_jsx(SubjectLine, { answer: answer, query: query, 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
+ case 'phrase-check':
23
+ return (_jsxs(_Fragment, { children: [_jsx(SubjectLine, { answer: answer, query: query, saved: saved }), _jsx(GutterLine, { children: _jsx(Text, { color: answer.isCorrect ? C.green : C.red, children: answer.isCorrect ? TUI.isCorrect : TUI.notCorrect }) }), !answer.isCorrect && answer.correctedText && (_jsx(GutterLine, { children: _jsxs(Text, { color: C.label, children: [_jsx(Text, { color: C.sapphire, children: TUI.fixLabel }), " ", answer.correctedText] }) })), !answer.isCorrect &&
24
+ (answer.issues ?? []).map((issue) => (_jsx(Indented, { children: _jsxs(Text, { color: C.label, children: [issue.text, " ", _jsxs(Text, { color: C.green, children: ["\u2192 ", issue.fixText] }), ": ", issue.reasonVi] }) }, issue.text))), answer.structureVi && (_jsxs(_Fragment, { children: [_jsx(GutterLine, {}), _jsx(GutterLine, { children: _jsxs(Text, { color: C.label, children: [_jsx(Text, { color: C.sapphire, children: TUI.structureLabel }), " ", answer.structureVi] }) })] })), (answer.tipsVi ?? []).length > 0 && (_jsxs(_Fragment, { children: [_jsx(GutterLine, {}), _jsx(GutterLine, { children: _jsx(Text, { color: C.sapphire, children: TUI.tipsLabel }) }), (answer.tipsVi ?? []).map((tip) => (_jsx(Indented, { children: _jsxs(Text, { color: C.overlay1, children: ["\u2022 ", tip] }) }, tip)))] })), (answer.rewrites ?? []).length > 0 && (_jsxs(_Fragment, { children: [_jsx(GutterLine, {}), _jsx(GutterLine, { children: _jsx(Text, { color: C.sapphire, children: TUI.rewritesLabel }) }), (answer.rewrites ?? []).map((rewrite) => (_jsx(Indented, { children: _jsxs(Text, { color: C.label, children: [_jsxs(Text, { color: C.green, children: ["\u2192 ", rewrite.text] }), " ", _jsxs(Text, { color: C.overlay1, children: ["(", rewrite.noteVi, ")"] })] }) }, rewrite.text)))] }))] }));
22
25
  }
23
26
  }
27
+ // The quoted text an interpretation or a phrase-check is about, on one line.
28
+ function SubjectLine({ answer, query, saved }) {
29
+ return (_jsxs(GutterLine, { children: [_jsxs(Text, { color: C.overlay1, children: ["\"", displaySubject(answer, query).replace(/\s*\n\s*/g, ' / '), "\""] }), _jsx(Star, { saved: saved })] }));
30
+ }
31
+ // IPA and every sense: the meaning view, and a word-check on a real word.
32
+ function Senses({ answer }) {
33
+ 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)))] }));
34
+ }
24
35
  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)))] }));
36
+ 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
37
  }
27
38
  //# sourceMappingURL=answer-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"answer-view.js","sourceRoot":"","sources":["../../src/components/answer-view.tsx"],"names":[],"mappings":"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"}
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
@@ -16,9 +16,12 @@ const SYSTEM = [
16
16
  'Classify the question into exactly one kind:',
17
17
  '- word-check: asking whether something is a real English word/term, or what the correct word is.',
18
18
  '- meaning: asking what a word/phrase/idiom means.',
19
- '- interpretation: asking how to understand a specific passage, joke, or sentence in context.',
19
+ '- interpretation: asking how to understand a specific passage, joke, or sentence someone else wrote.',
20
+ '- phrase-check: asking whether a phrase or sentence the user wrote is correct, or how to say it better. A bare English sentence with no question is a phrase-check.',
20
21
  'All *Vi fields must be in Vietnamese. Keep quoted English inside examples/nuances as-is. Be concise; dictionary register, not chatty.',
21
- 'Rules: suggestions is empty when the word IS valid. synonyms must never include the term itself. subject must quote the interpreted text verbatim. Fields not used by the chosen kind are null.',
22
+ '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.',
23
+ 'For phrase-check: subject is the text verbatim; correctedText and issues are null when it is correct; structureVi breaks the sentence into its parts; tipsVi says how to make it read better; rewrites gives up to 3 better sentences that keep the meaning, each with its tone.',
24
+ '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
25
  ].join('\n');
23
26
  function modelFor({ route, model, apiKey }) {
24
27
  if (route === 'openai')
@@ -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,iMAAiM;CAClM,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"}
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,sGAAsG;IACtG,qKAAqK;IACrK,uIAAuI;IACvI,qIAAqI;IACrI,kRAAkR;IAClR,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"}
@@ -1,12 +1,13 @@
1
1
  import { z } from 'zod';
2
2
  import { type Result } from './types.js';
3
- export declare const KINDS: readonly ["word-check", "meaning", "interpretation"];
3
+ export declare const KINDS: readonly ["word-check", "meaning", "interpretation", "phrase-check"];
4
4
  export type Kind = (typeof KINDS)[number];
5
5
  export declare const AnswerEnvelope: z.ZodObject<{
6
6
  kind: z.ZodEnum<{
7
7
  "word-check": "word-check";
8
8
  meaning: "meaning";
9
9
  interpretation: "interpretation";
10
+ "phrase-check": "phrase-check";
10
11
  }>;
11
12
  term: z.ZodNullable<z.ZodString>;
12
13
  isWord: z.ZodNullable<z.ZodBoolean>;
@@ -25,13 +26,28 @@ export declare const AnswerEnvelope: z.ZodObject<{
25
26
  glossVi: z.ZodString;
26
27
  }, z.core.$strip>>;
27
28
  synonyms: z.ZodArray<z.ZodString>;
29
+ antonyms: z.ZodArray<z.ZodString>;
28
30
  }, z.core.$strip>>>;
29
31
  subject: z.ZodNullable<z.ZodString>;
30
32
  explanationVi: z.ZodNullable<z.ZodString>;
31
33
  nuances: z.ZodNullable<z.ZodArray<z.ZodString>>;
34
+ isCorrect: z.ZodNullable<z.ZodBoolean>;
35
+ correctedText: z.ZodNullable<z.ZodString>;
36
+ issues: z.ZodNullable<z.ZodArray<z.ZodObject<{
37
+ text: z.ZodString;
38
+ fixText: z.ZodString;
39
+ reasonVi: z.ZodString;
40
+ }, z.core.$strip>>>;
41
+ structureVi: z.ZodNullable<z.ZodString>;
42
+ tipsVi: z.ZodNullable<z.ZodArray<z.ZodString>>;
43
+ rewrites: z.ZodNullable<z.ZodArray<z.ZodObject<{
44
+ text: z.ZodString;
45
+ noteVi: z.ZodString;
46
+ }, z.core.$strip>>>;
32
47
  }, z.core.$strip>;
33
48
  export type Answer = z.infer<typeof AnswerEnvelope>;
34
49
  export declare function checkContent(a: Answer): string | null;
35
50
  export declare const displayTerm: (answer: Answer, query: string) => string;
51
+ export declare const displaySubject: (answer: Answer, query: string) => string;
36
52
  export declare const bareIpa: (ipa: string) => string;
37
53
  export declare function parseStored(answerJson: string): Result<Answer>;
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { err, messageOf, ok } from './types.js';
3
- export const KINDS = ['word-check', 'meaning', 'interpretation'];
3
+ export const KINDS = ['word-check', 'meaning', 'interpretation', 'phrase-check'];
4
4
  // Flat on purpose: every field present, null when the kind doesn't use it.
5
5
  // A discriminated union breaks OpenAI strict structured outputs (top-level oneOf).
6
6
  export const AnswerEnvelope = z.object({
@@ -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,14 +30,37 @@ 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(),
36
- // interpretation
37
- subject: z.string().nullable().describe('the text being interpreted, verbatim'),
37
+ // interpretation and phrase-check
38
+ subject: z.string().nullable().describe('the text being interpreted or checked, verbatim'),
38
39
  explanationVi: z.string().nullable().describe('Vietnamese explanation of meaning/intent'),
39
40
  nuances: z.array(z.string()).max(3).nullable().describe('wordplay, tone, register notes'),
41
+ // phrase-check
42
+ isCorrect: z.boolean().nullable().describe('whether the text is grammatical as written'),
43
+ correctedText: z.string().nullable().describe('the text with the smallest fix; null when it is correct'),
44
+ issues: z
45
+ .array(z.object({
46
+ text: z.string().describe('the wrong part, verbatim'),
47
+ fixText: z.string(),
48
+ reasonVi: z.string().describe('why, in Vietnamese'),
49
+ }))
50
+ .max(4)
51
+ .nullable(),
52
+ structureVi: z.string().nullable().describe('the sentence structure, part by part, in Vietnamese'),
53
+ tipsVi: z.array(z.string()).max(3).nullable().describe('how to make it read better, in Vietnamese'),
54
+ rewrites: z
55
+ .array(z.object({
56
+ text: z.string().describe('a better English sentence with the same meaning'),
57
+ noteVi: z.string().describe('tone or where it fits, in Vietnamese'),
58
+ }))
59
+ .max(3)
60
+ .nullable(),
40
61
  });
62
+ // Fields added after the first release. A row stored before one existed lacks it.
63
+ const LATER_FIELDS = ['isCorrect', 'correctedText', 'issues', 'structureVi', 'tipsVi', 'rewrites'];
41
64
  const blank = (s) => s === null || s.trim() === '';
42
65
  // An envelope can pass the schema and still say nothing. Returns what's missing, or null.
43
66
  export function checkContent(a) {
@@ -56,15 +79,38 @@ export function checkContent(a) {
56
79
  if (blank(a.explanationVi))
57
80
  return 'interpretation without explanationVi';
58
81
  return null;
82
+ case 'phrase-check':
83
+ if (a.isCorrect === null)
84
+ return 'phrase-check without isCorrect';
85
+ if (blank(a.structureVi))
86
+ return 'phrase-check without structureVi';
87
+ return null;
59
88
  }
60
89
  }
61
90
  // The headline term: what the model named, or the question itself.
62
91
  export const displayTerm = (answer, query) => answer.term?.trim() || query.trim();
92
+ // The quoted text of an interpretation or phrase-check. Models sometimes send it already quoted;
93
+ // renderers add their own quotes, so any pair the model sent comes off.
94
+ export const displaySubject = (answer, query) => (answer.subject?.trim() || query.trim()).replace(/^["“'‘]+|["”'’]+$/g, '').trim();
63
95
  // Models send IPA with or without slashes; renderers add their own.
64
96
  export const bareIpa = (ipa) => ipa.replace(/^\/|\/$/g, '');
97
+ // Older rows lack the phrase-check fields, and their entries lack antonyms. The model's schema keeps
98
+ // every field required (OpenAI strict mode), so the defaults go in here, not on the schema.
99
+ function upgradeStored(raw) {
100
+ if (typeof raw !== 'object' || raw === null)
101
+ return raw;
102
+ const upgraded = { ...raw };
103
+ for (const field of LATER_FIELDS)
104
+ if (!(field in upgraded))
105
+ upgraded[field] = null;
106
+ if (Array.isArray(upgraded.entries)) {
107
+ upgraded.entries = upgraded.entries.map((e) => typeof e === 'object' && e !== null && !('antonyms' in e) ? { ...e, antonyms: [] } : e);
108
+ }
109
+ return upgraded;
110
+ }
65
111
  export function parseStored(answerJson) {
66
112
  try {
67
- const parsed = AnswerEnvelope.safeParse(JSON.parse(answerJson));
113
+ const parsed = AnswerEnvelope.safeParse(upgradeStored(JSON.parse(answerJson)));
68
114
  return parsed.success ? ok(parsed.data) : err(parsed.error.message);
69
115
  }
70
116
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/lib/envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/lib/envelope.ts"],"names":[],"mappings":"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"}
@@ -78,6 +78,12 @@ export declare const TUI: {
78
78
  readonly helpHints: "esc về home · q thoát";
79
79
  readonly isWord: "✓ từ có thật";
80
80
  readonly notWord: "✗ không phải từ chuẩn";
81
+ readonly isCorrect: "✓ đúng ngữ pháp";
82
+ readonly notCorrect: "✗ chưa đúng ngữ pháp";
83
+ readonly fixLabel: "Sửa:";
84
+ readonly structureLabel: "Cấu trúc:";
85
+ readonly tipsLabel: "Gợi ý:";
86
+ readonly rewritesLabel: "Câu hay hơn:";
81
87
  };
82
88
  export type HelpPaths = {
83
89
  env: string;
@@ -107,6 +107,12 @@ export const TUI = {
107
107
  helpHints: 'esc về home · q thoát',
108
108
  isWord: '✓ từ có thật',
109
109
  notWord: '✗ không phải từ chuẩn',
110
+ isCorrect: '✓ đúng ngữ pháp',
111
+ notCorrect: '✗ chưa đúng ngữ pháp',
112
+ fixLabel: 'Sửa:',
113
+ structureLabel: 'Cấu trúc:',
114
+ tipsLabel: 'Gợi ý:',
115
+ rewritesLabel: 'Câu hay hơn:',
110
116
  };
111
117
  // The Help screen: keys by place, the variables b3dict reads, and where its files are.
112
118
  export const helpSections = (paths) => [
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/lib/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/lib/messages.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import { bareIpa, displayTerm } from './envelope.js';
1
+ import { bareIpa, displaySubject, 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 the others too.
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 (!answer.isWord) {
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,38 @@ export function renderText(answer, query) {
17
23
  }
18
24
  case 'meaning': {
19
25
  const lines = [answer.ipa ? `${term} /${bareIpa(answer.ipa)}/` : term];
20
- for (const e of answer.entries ?? [])
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();
31
+ case 'phrase-check': {
32
+ const lines = [`"${displaySubject(answer, query)}"`, answer.isCorrect ? TUI.isCorrect : TUI.notCorrect];
33
+ if (!answer.isCorrect) {
34
+ if (answer.correctedText)
35
+ lines.push(`${TUI.fixLabel} ${answer.correctedText}`);
36
+ for (const i of answer.issues ?? [])
37
+ lines.push(` ${i.text} → ${i.fixText}: ${i.reasonVi}`);
38
+ }
39
+ if (answer.structureVi)
40
+ lines.push(`${TUI.structureLabel} ${answer.structureVi}`);
41
+ const tips = answer.tipsVi ?? [];
42
+ if (tips.length > 0)
43
+ lines.push(TUI.tipsLabel, ...tips.map((t) => ` • ${t}`));
44
+ const rewrites = answer.rewrites ?? [];
45
+ if (rewrites.length > 0)
46
+ lines.push(TUI.rewritesLabel, ...rewrites.map((r) => ` → ${r.text} (${r.noteVi})`));
47
+ return lines.join('\n');
48
+ }
26
49
  }
27
50
  }
51
+ // Each sense in full: part of speech and register, then the thesaurus, then the examples.
52
+ function senseLines(answer) {
53
+ return (answer.entries ?? []).flatMap((e) => [
54
+ `(${e.partOfSpeech}${e.register ? ` · ${e.register}` : ''}) ${e.glossVi}`,
55
+ ...(e.synonyms.length > 0 ? [` ≈ ${e.synonyms.join(', ')}`] : []),
56
+ ...(e.antonyms.length > 0 ? [` ≠ ${e.antonyms.join(', ')}`] : []),
57
+ ...e.examples.flatMap((x) => [` "${x.text}"`, ` — ${x.glossVi}`]),
58
+ ]);
59
+ }
28
60
  //# 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,uDAAuD;AACvD,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,KAAa;IACtD,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAExC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,IAAI,MAAM,CAAC,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,EAAE;oBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACrF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,gBAAgB;YACnB,OAAO,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"render-text.js","sourceRoot":"","sources":["../../src/lib/render-text.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "b3-dict",
3
- "version": "0.4.2",
3
+ "version": "0.6.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",