b3-dict 0.5.0 → 0.7.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,8 @@ 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
19
+ b3dict "Agreed or Agree? Approved or Approve?" # which one to use
18
20
  b3dict "take for granted" --fresh # skip the stored answer, ask again
19
21
  b3dict "draggable" --json # raw answer envelope
20
22
  ```
@@ -1,7 +1,7 @@
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, groupTitle } 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';
@@ -18,9 +18,21 @@ export function AnswerView({ answer, query, saved }) {
18
18
  case 'meaning':
19
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)))] }))] }));
25
+ case 'compare':
26
+ return _jsx(CompareView, { answer: answer, saved: saved });
22
27
  }
23
28
  }
29
+ function CompareView({ answer, saved }) {
30
+ return (_jsxs(_Fragment, { children: [(answer.groups ?? []).map((group, index) => (_jsxs(Fragment, { children: [index > 0 && _jsx(GutterLine, {}), _jsxs(GutterLine, { children: [_jsx(Text, { color: C.label, bold: true, children: groupTitle(group) }), index === 0 && _jsx(Star, { saved: saved })] }), _jsx(GutterLine, { children: _jsxs(Text, { color: C.label, children: [_jsx(Text, { color: C.sapphire, children: TUI.differenceLabel }), " ", group.differenceVi] }) }), group.choices.map((choice) => (_jsxs(Fragment, { children: [_jsx(Indented, { children: _jsxs(Text, { color: C.label, children: [_jsx(Text, { color: C.green, children: choice.term }), " \u2014 ", TUI.useWhen, " ", choice.useWhenVi] }) }), choice.example && (_jsxs(_Fragment, { children: [_jsx(Indented, { by: 4, children: _jsxs(Text, { color: C.label, children: ["\"", choice.example.text, "\""] }) }), _jsx(Indented, { by: 5, children: _jsxs(Text, { color: C.overlay1, children: ["\u2014 ", choice.example.glossVi] }) })] }))] }, choice.term))), group.pitfallVi && (_jsx(Indented, { children: _jsxs(Text, { color: C.label, children: [_jsx(Text, { color: C.red, children: TUI.pitfallLabel }), " ", group.pitfallVi] }) }))] }, index))), answer.pickRuleVi && (_jsxs(_Fragment, { children: [_jsx(GutterLine, {}), _jsx(GutterLine, { children: _jsxs(Text, { color: C.label, children: [_jsx(Text, { color: C.sapphire, children: TUI.pickRuleLabel }), " ", answer.pickRuleVi] }) })] }))] }));
31
+ }
32
+ // The quoted text an interpretation or a phrase-check is about, on one line.
33
+ function SubjectLine({ answer, query, saved }) {
34
+ return (_jsxs(GutterLine, { children: [_jsxs(Text, { color: C.overlay1, children: ["\"", displaySubject(answer, query).replace(/\s*\n\s*/g, ' / '), "\""] }), _jsx(Star, { saved: saved })] }));
35
+ }
24
36
  // IPA and every sense: the meaning view, and a word-check on a real word.
25
37
  function Senses({ answer }) {
26
38
  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)))] }));
@@ -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,13 @@ 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.',
21
+ '- compare: asking which of two or more words or forms to use, or how they differ ("A or B?", "khác nhau thế nào", "khi nào dùng"). Even when every option is a real word, this is compare, not word-check.',
20
22
  'All *Vi fields must be in Vietnamese. Keep quoted English inside examples/nuances as-is. Be concise; dictionary register, not chatty.',
21
23
  '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.',
24
+ '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.',
25
+ 'For compare: one group per set of options asked about (up to 3); each group gives differenceVi, one choice per option with useWhenVi and an example, and pitfallVi when Vietnamese speakers often get it wrong; pickRuleVi is one quick rule for the whole question.',
22
26
  '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.',
23
27
  ].join('\n');
24
28
  function modelFor({ route, model, apiKey }) {
@@ -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,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"}
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,4MAA4M;IAC5M,uIAAuI;IACvI,qIAAqI;IACrI,kRAAkR;IAClR,sQAAsQ;IACtQ,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,14 @@
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", "compare"];
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";
11
+ compare: "compare";
10
12
  }>;
11
13
  term: z.ZodNullable<z.ZodString>;
12
14
  isWord: z.ZodNullable<z.ZodBoolean>;
@@ -30,9 +32,38 @@ export declare const AnswerEnvelope: z.ZodObject<{
30
32
  subject: z.ZodNullable<z.ZodString>;
31
33
  explanationVi: z.ZodNullable<z.ZodString>;
32
34
  nuances: z.ZodNullable<z.ZodArray<z.ZodString>>;
35
+ isCorrect: z.ZodNullable<z.ZodBoolean>;
36
+ correctedText: z.ZodNullable<z.ZodString>;
37
+ issues: z.ZodNullable<z.ZodArray<z.ZodObject<{
38
+ text: z.ZodString;
39
+ fixText: z.ZodString;
40
+ reasonVi: z.ZodString;
41
+ }, z.core.$strip>>>;
42
+ structureVi: z.ZodNullable<z.ZodString>;
43
+ tipsVi: z.ZodNullable<z.ZodArray<z.ZodString>>;
44
+ rewrites: z.ZodNullable<z.ZodArray<z.ZodObject<{
45
+ text: z.ZodString;
46
+ noteVi: z.ZodString;
47
+ }, z.core.$strip>>>;
48
+ groups: z.ZodNullable<z.ZodArray<z.ZodObject<{
49
+ terms: z.ZodArray<z.ZodString>;
50
+ differenceVi: z.ZodString;
51
+ choices: z.ZodArray<z.ZodObject<{
52
+ term: z.ZodString;
53
+ useWhenVi: z.ZodString;
54
+ example: z.ZodNullable<z.ZodObject<{
55
+ text: z.ZodString;
56
+ glossVi: z.ZodString;
57
+ }, z.core.$strip>>;
58
+ }, z.core.$strip>>;
59
+ pitfallVi: z.ZodNullable<z.ZodString>;
60
+ }, z.core.$strip>>>;
61
+ pickRuleVi: z.ZodNullable<z.ZodString>;
33
62
  }, z.core.$strip>;
34
63
  export type Answer = z.infer<typeof AnswerEnvelope>;
35
64
  export declare function checkContent(a: Answer): string | null;
36
65
  export declare const displayTerm: (answer: Answer, query: string) => string;
66
+ export declare const displaySubject: (answer: Answer, query: string) => string;
67
+ export declare const groupTitle: (group: NonNullable<Answer["groups"]>[number]) => string;
37
68
  export declare const bareIpa: (ipa: string) => string;
38
69
  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', 'compare'];
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({
@@ -34,11 +34,55 @@ export const AnswerEnvelope = z.object({
34
34
  }))
35
35
  .max(3)
36
36
  .nullable(),
37
- // interpretation
38
- 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'),
39
39
  explanationVi: z.string().nullable().describe('Vietnamese explanation of meaning/intent'),
40
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(),
61
+ // compare
62
+ groups: z
63
+ .array(z.object({
64
+ terms: z.array(z.string()).max(4).describe('the words or phrases compared in this group'),
65
+ differenceVi: z.string().describe('the core difference, in Vietnamese'),
66
+ choices: z
67
+ .array(z.object({
68
+ term: z.string(),
69
+ useWhenVi: z.string().describe('when to use it, in Vietnamese'),
70
+ example: z
71
+ .object({
72
+ text: z.string().describe('English example sentence'),
73
+ glossVi: z.string().describe('Vietnamese gloss of the example'),
74
+ })
75
+ .nullable(),
76
+ }))
77
+ .max(4),
78
+ pitfallVi: z.string().nullable().describe('a mistake Vietnamese speakers often make here'),
79
+ }))
80
+ .max(3)
81
+ .nullable(),
82
+ pickRuleVi: z.string().nullable().describe('one quick rule for choosing, in Vietnamese'),
41
83
  });
84
+ // Fields added after the first release. A row stored before one existed lacks it.
85
+ const LATER_FIELDS = ['isCorrect', 'correctedText', 'issues', 'structureVi', 'tipsVi', 'rewrites', 'groups', 'pickRuleVi'];
42
86
  const blank = (s) => s === null || s.trim() === '';
43
87
  // An envelope can pass the schema and still say nothing. Returns what's missing, or null.
44
88
  export function checkContent(a) {
@@ -57,23 +101,46 @@ export function checkContent(a) {
57
101
  if (blank(a.explanationVi))
58
102
  return 'interpretation without explanationVi';
59
103
  return null;
104
+ case 'phrase-check':
105
+ if (a.isCorrect === null)
106
+ return 'phrase-check without isCorrect';
107
+ if (blank(a.structureVi))
108
+ return 'phrase-check without structureVi';
109
+ return null;
110
+ case 'compare':
111
+ if (!a.groups?.length)
112
+ return 'compare without groups';
113
+ if (a.groups.some((g) => blank(g.differenceVi)))
114
+ return 'compare group without differenceVi';
115
+ return null;
60
116
  }
61
117
  }
62
118
  // The headline term: what the model named, or the question itself.
63
119
  export const displayTerm = (answer, query) => answer.term?.trim() || query.trim();
120
+ // The quoted text of an interpretation or phrase-check. Models sometimes send it already quoted;
121
+ // renderers add their own quotes, so any pair the model sent comes off.
122
+ export const displaySubject = (answer, query) => (answer.subject?.trim() || query.trim()).replace(/^["“'‘]+|["”'’]+$/g, '').trim();
123
+ // A compare group's heading. Some models leave terms empty and only name the options in choices.
124
+ export const groupTitle = (group) => (group.terms.length > 0 ? group.terms : group.choices.map((c) => c.term)).join(' ↔ ');
64
125
  // Models send IPA with or without slashes; renderers add their own.
65
126
  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))
127
+ // Older rows lack the phrase-check fields, and their entries lack antonyms. The model's schema keeps
128
+ // every field required (OpenAI strict mode), so the defaults go in here, not on the schema.
129
+ function upgradeStored(raw) {
130
+ if (typeof raw !== 'object' || raw === null)
70
131
  return raw;
71
- const entries = raw.entries.map((e) => typeof e === 'object' && e !== null && !('antonyms' in e) ? { ...e, antonyms: [] } : e);
72
- return { ...raw, entries };
132
+ const upgraded = { ...raw };
133
+ for (const field of LATER_FIELDS)
134
+ if (!(field in upgraded))
135
+ upgraded[field] = null;
136
+ if (Array.isArray(upgraded.entries)) {
137
+ upgraded.entries = upgraded.entries.map((e) => typeof e === 'object' && e !== null && !('antonyms' in e) ? { ...e, antonyms: [] } : e);
138
+ }
139
+ return upgraded;
73
140
  }
74
141
  export function parseStored(answerJson) {
75
142
  try {
76
- const parsed = AnswerEnvelope.safeParse(withAntonyms(JSON.parse(answerJson)));
143
+ const parsed = AnswerEnvelope.safeParse(upgradeStored(JSON.parse(answerJson)));
77
144
  return parsed.success ? ok(parsed.data) : err(parsed.error.message);
78
145
  }
79
146
  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,16 @@ 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:";
87
+ readonly differenceLabel: "Khác nhau:";
88
+ readonly useWhen: "dùng khi:";
89
+ readonly pitfallLabel: "✗ Hay sai:";
90
+ readonly pickRuleLabel: "Chọn nhanh:";
81
91
  };
82
92
  export type HelpPaths = {
83
93
  env: string;
@@ -107,6 +107,16 @@ 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:',
116
+ differenceLabel: 'Khác nhau:',
117
+ useWhen: 'dùng khi:',
118
+ pitfallLabel: '✗ Hay sai:',
119
+ pickRuleLabel: 'Chọn nhanh:',
110
120
  };
111
121
  // The Help screen: keys by place, the variables b3dict reads, and where its files are.
112
122
  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,4 +1,4 @@
1
- import { bareIpa, displayTerm } from './envelope.js';
1
+ import { bareIpa, displaySubject, displayTerm, groupTitle } 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
4
  // fields (a word-check on a real word also reads the meaning ones), because loose models fill in
@@ -28,6 +28,38 @@ export function renderText(answer, query) {
28
28
  }
29
29
  case 'interpretation':
30
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
+ }
49
+ case 'compare': {
50
+ const blocks = (answer.groups ?? []).map((g) => [
51
+ groupTitle(g),
52
+ `${TUI.differenceLabel} ${g.differenceVi}`,
53
+ ...g.choices.flatMap((c) => [
54
+ ` ${c.term} — ${TUI.useWhen} ${c.useWhenVi}`,
55
+ ...(c.example ? [` "${c.example.text}"`, ` — ${c.example.glossVi}`] : []),
56
+ ]),
57
+ ...(g.pitfallVi ? [` ${TUI.pitfallLabel} ${g.pitfallVi}`] : []),
58
+ ].join('\n'));
59
+ if (answer.pickRuleVi)
60
+ blocks.push(`${TUI.pickRuleLabel} ${answer.pickRuleVi}`);
61
+ return blocks.join('\n\n');
62
+ }
31
63
  }
32
64
  }
33
65
  // Each sense in full: part of speech and register, then the thesaurus, then the examples.
@@ -1 +1 @@
1
- {"version":3,"file":"render-text.js","sourceRoot":"","sources":["../../src/lib/render-text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-text.js","sourceRoot":"","sources":["../../src/lib/render-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAe,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,gGAAgG;AAChG,iGAAiG;AACjG,kBAAkB;AAClB,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,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,IAAI,MAAM,CAAC,GAAG;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvD,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,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,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAClC,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;QAC7C,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACtB,IAAI,MAAM,CAAC,aAAa;oBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;gBAChF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE;oBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/F,CAAC;YACD,IAAI,MAAM,CAAC,WAAW;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAClF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;YACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9G,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7C;gBACE,UAAU,CAAC,CAAC,CAAC;gBACb,GAAG,GAAG,CAAC,eAAe,IAAI,CAAC,CAAC,YAAY,EAAE;gBAC1C,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBAC1B,KAAK,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE;oBAC7C,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAClF,CAAC;gBACF,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACjE,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;YACF,IAAI,MAAM,CAAC,UAAU;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAChF,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE;QACzE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KACtE,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "b3-dict",
3
- "version": "0.5.0",
3
+ "version": "0.7.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",