oomi-ai 0.12.1 → 0.12.2
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/lib/localAgent.js +1 -1
- package/package.json +1 -1
- package/skills/oomi/SKILL.md +3 -1
package/lib/localAgent.js
CHANGED
|
@@ -440,7 +440,7 @@ export function startChannelWorker(state, runtime) {
|
|
|
440
440
|
export function practiceContext(brief) {
|
|
441
441
|
if (!brief || typeof brief !== 'object' || Array.isArray(brief)) return '';
|
|
442
442
|
if (!/^lp_[a-f0-9]{24}$/.test(brief.practiceSessionId || '') || !/^spc_[a-f0-9]{24}$/.test(brief.spaceId || '') ||
|
|
443
|
-
!['es', 'fr', 'de', 'it', 'pt'].includes(brief.targetLanguage) || brief.instructionLanguage !== 'en' ||
|
|
443
|
+
!['es', 'fr', 'de', 'it', 'pt', 'zh-Hans', 'ja', 'ko'].includes(brief.targetLanguage) || brief.instructionLanguage !== 'en' ||
|
|
444
444
|
!['beginner', 'intermediate', 'advanced'].includes(brief.level) || typeof brief.goal !== 'string' || brief.goal.length > 300 ||
|
|
445
445
|
!Number.isInteger(brief.minutesPerDay) || brief.minutesPerDay < 3 || brief.minutesPerDay > 60 ||
|
|
446
446
|
!Array.isArray(brief.phrasesToTry) || brief.phrasesToTry.length > 10 || brief.phrasesToTry.some(p => !p || typeof p.text !== 'string' || p.text.length > 120 || typeof p.translation !== 'string' || p.translation.length > 120)) return '';
|
package/package.json
CHANGED
package/skills/oomi/SKILL.md
CHANGED
|
@@ -519,6 +519,8 @@ Oomi renders simple Markdown in chat: short paragraphs, bullet or numbered lists
|
|
|
519
519
|
|
|
520
520
|
### Language Spaces v1
|
|
521
521
|
|
|
522
|
-
Choose Language in Talk after the owner's instruction; ask only for missing target language (`es`, `fr`, `de`, `it`, `pt`), level, goal and minutes/day (3–60), and confirm English instruction and the IANA timezone. Use `oomi spaces catalog` and build the approved Path / Lesson / Lesson complete / Words / Practice call views from `learning_path`, `exercise`, `step_sequence` variant `lesson`, `recap` variant `language`, `review_deck`, and `practice_feedback`. Write lessons as JSON data, each with `provenance: {kind:"persona", validation:"structural"}`; translations are persona-written and not teacher-checked. A daily objective is a separate opt-in; Space creation schedules nothing.
|
|
522
|
+
Choose Language in Talk after the owner's instruction; ask only for missing target language (`es`, `fr`, `de`, `it`, `pt`, `zh-Hans`, `ja`, `ko`), level, goal and minutes/day (3–60), and confirm English instruction and the IANA timezone. Use `oomi spaces catalog` and build the approved Path / Lesson / Lesson complete / Words / Practice call views from `learning_path`, `exercise`, `step_sequence` variant `lesson`, `recap` variant `language`, `review_deck`, and `practice_feedback`. Write lessons as JSON data, each with `provenance: {kind:"persona", validation:"structural"}`; translations are persona-written and not teacher-checked. A daily objective is a separate opt-in; Space creation schedules nothing.
|
|
523
|
+
|
|
524
|
+
Offer Mandarin (simplified Chinese, `zh-Hans`), Japanese and Korean in Talk like the other languages. At beginner level, use choose, listen-and-choose and arrange; translate answers are in English. Typing in the target language starts at intermediate. List accepted alternatives explicitly, including Japanese kanji and kana spellings where both are natural; never guess alternatives. Put reading aids (pinyin with tone marks, romaji or Revised Romanization) in `explanation`, optionally after a word in an option, like "你好 (nǐ hǎo)". Never put romanization in an accepted text unless the exercise asks for romanization.
|
|
523
525
|
|
|
524
526
|
Read before writing; send `space.v4`, revision, stable idempotency key and an owner `sourceMessageId`. The CLI advertises `cooking.v1, language.v1`. `oomi spaces language-action SPACE --component COMPONENT --file action.json` performs permitted actions. Never answer or skip exercises for the owner. After an ordinary practice call ends, use that handoff's `practiceSessionId` with `action:"save_practice_feedback"`, at most five `phrasesToTry` (`text,translation`) and five `corrections` (`original,suggested,reason`), each field at most 300 characters. Feedback is your suggestions, not mastery scoring. A call is eligible only after its practice brief was accepted. The feedback event stays pending until the runtime confirms startup; confirmed non-starts retry, and an uncertain start gets one recovery attempt with the same dedupe key before expiring after 24 hours. Read it with `oomi spaces practice-feedback SPACE --component COMPONENT`; paginate cards with `oomi spaces reviews SPACE --component COMPONENT [--cursor CURSOR]`. Never fabricate a call, request audio from client-written text, or start a microphone. Calls are saved in Talk.
|