cotutor 0.1.0 → 0.3.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.
Files changed (845) hide show
  1. package/LICENSE +247 -21
  2. package/NOTICE +42 -0
  3. package/README.md +107 -24
  4. package/bin/cotutor.js +4 -4
  5. package/cards/canvas/card.css +8 -0
  6. package/cards/canvas/card.md +68 -0
  7. package/cards/choice/card.css +18 -0
  8. package/cards/choice/card.md +55 -0
  9. package/cards/code/card.css +5 -0
  10. package/cards/code/card.md +46 -0
  11. package/cards/dictation/card.css +10 -0
  12. package/cards/dictation/card.md +97 -0
  13. package/cards/image/card.css +10 -0
  14. package/cards/image/card.md +52 -0
  15. package/cards/lecture/card.css +9 -0
  16. package/cards/lecture/card.md +69 -0
  17. package/cards/paint/card.css +20 -0
  18. package/cards/paint/card.md +77 -0
  19. package/cards/photo/card.css +15 -0
  20. package/cards/photo/card.md +61 -0
  21. package/cards/read/card.css +6 -0
  22. package/cards/read/card.md +51 -0
  23. package/cards/text/card.css +3 -0
  24. package/cards/text/card.md +69 -0
  25. package/cards/tianzige/card.css +17 -0
  26. package/cards/tianzige/card.md +78 -0
  27. package/cards/tutor/card.css +66 -0
  28. package/cards/tutor/card.md +148 -0
  29. package/cards/word/card.css +24 -0
  30. package/cards/word/card.md +91 -0
  31. package/cards//346/235/277/344/271/246/346/200/216/344/271/210/345/206/231.md +159 -0
  32. package/dist/app/activity-eval-rules.d.ts +62 -0
  33. package/dist/app/activity-eval-rules.js +276 -0
  34. package/dist/app/activity-eval.d.ts +65 -0
  35. package/dist/app/activity-eval.js +158 -0
  36. package/dist/app/build.d.ts +11 -0
  37. package/dist/app/build.js +45 -0
  38. package/dist/app/cli/activities.d.ts +63 -0
  39. package/dist/app/cli/activities.js +158 -0
  40. package/dist/app/cli/cert.d.ts +7 -0
  41. package/dist/app/cli/cert.js +36 -0
  42. package/dist/app/cli/chalk/bake.d.ts +10 -0
  43. package/dist/app/cli/chalk/bake.js +58 -0
  44. package/dist/app/cli/chalk/browser.d.ts +16 -0
  45. package/dist/app/cli/chalk/browser.js +142 -0
  46. package/dist/app/cli/chalk/build.d.ts +14 -0
  47. package/dist/app/cli/chalk/build.js +100 -0
  48. package/dist/app/cli/chalk/dub.d.ts +51 -0
  49. package/dist/app/cli/chalk/dub.js +106 -0
  50. package/dist/app/cli/chalk/load-scene.d.ts +34 -0
  51. package/dist/app/cli/chalk/load-scene.js +117 -0
  52. package/dist/app/cli/chalk/main.d.ts +7 -0
  53. package/dist/app/cli/chalk/main.js +198 -0
  54. package/dist/app/cli/chalk/serve.d.ts +4 -0
  55. package/dist/app/cli/chalk/serve.js +28 -0
  56. package/dist/app/cli/chalk/snap.d.ts +65 -0
  57. package/dist/app/cli/chalk/snap.js +103 -0
  58. package/dist/app/cli/chalk/typecheck.d.ts +7 -0
  59. package/dist/app/cli/chalk/typecheck.js +51 -0
  60. package/dist/app/cli/doctor.d.ts +23 -0
  61. package/dist/app/cli/doctor.js +617 -0
  62. package/dist/app/cli/grades.d.ts +14 -0
  63. package/dist/app/cli/grades.js +44 -0
  64. package/dist/{cli → app/cli}/init.d.ts +3 -1
  65. package/dist/app/cli/init.js +155 -0
  66. package/dist/app/cli/main.js +715 -0
  67. package/dist/app/cli/migrate.d.ts +58 -0
  68. package/dist/app/cli/migrate.js +253 -0
  69. package/dist/app/cli/serve.d.ts +37 -0
  70. package/dist/app/cli/serve.js +98 -0
  71. package/dist/app/cli/shipped.d.ts +30 -0
  72. package/dist/app/cli/shipped.js +47 -0
  73. package/dist/app/cli/skeleton.d.ts +38 -0
  74. package/dist/app/cli/skeleton.js +161 -0
  75. package/dist/app/cli/skills.d.ts +55 -0
  76. package/dist/app/cli/skills.js +189 -0
  77. package/dist/app/cli/themes.d.ts +52 -0
  78. package/dist/app/cli/themes.js +148 -0
  79. package/dist/app/cli/tutors.d.ts +73 -0
  80. package/dist/app/cli/tutors.js +250 -0
  81. package/dist/app/cli/usage.d.ts +2 -0
  82. package/dist/app/cli/usage.js +30 -0
  83. package/dist/app/dictation/recognize.d.ts +18 -0
  84. package/dist/app/dictation/recognize.js +6 -0
  85. package/dist/app/dictation/route.d.ts +52 -0
  86. package/dist/app/dictation/route.js +510 -0
  87. package/dist/app/diff.d.ts +11 -0
  88. package/dist/app/diff.js +71 -0
  89. package/dist/app/http/access.d.ts +62 -0
  90. package/dist/app/http/access.js +180 -0
  91. package/dist/app/http/app.d.ts +246 -0
  92. package/dist/app/http/app.js +1212 -0
  93. package/dist/app/http/dev-activities.d.ts +115 -0
  94. package/dist/app/http/dev-activities.js +193 -0
  95. package/dist/app/http/dev-overview.d.ts +108 -0
  96. package/dist/app/http/dev-overview.js +209 -0
  97. package/dist/app/http/dev-tutor-files.d.ts +80 -0
  98. package/dist/app/http/dev-tutor-files.js +151 -0
  99. package/dist/app/http/parent-home.d.ts +37 -0
  100. package/dist/app/http/parent-home.js +203 -0
  101. package/dist/app/http/range.d.ts +9 -0
  102. package/dist/app/http/range.js +19 -0
  103. package/dist/app/http/raw-view.d.ts +117 -0
  104. package/dist/app/http/raw-view.js +149 -0
  105. package/dist/app/http/send-file.d.ts +7 -0
  106. package/dist/app/http/send-file.js +29 -0
  107. package/dist/app/http/stage.d.ts +24 -0
  108. package/dist/app/http/stage.js +97 -0
  109. package/dist/app/http/theme.d.ts +13 -0
  110. package/dist/app/http/theme.js +41 -0
  111. package/dist/app/machine/bailian.d.ts +28 -0
  112. package/dist/app/machine/bailian.js +88 -0
  113. package/dist/app/mock/mock-live.d.ts +16 -0
  114. package/dist/app/mock/mock-live.js +140 -0
  115. package/dist/app/mock/mock.d.ts +89 -0
  116. package/dist/app/mock/mock.js +1117 -0
  117. package/dist/app/replay.d.ts +94 -0
  118. package/dist/app/replay.js +170 -0
  119. package/dist/app/skills/analyze-doc.d.ts +3 -0
  120. package/dist/app/skills/analyze-doc.js +47 -0
  121. package/dist/app/skills/home-doc.d.ts +5 -0
  122. package/dist/app/skills/home-doc.js +112 -0
  123. package/dist/app/skills/tune-doc.d.ts +3 -0
  124. package/dist/app/skills/tune-doc.js +80 -0
  125. package/dist/app/talk/list.d.ts +11 -0
  126. package/dist/app/talk/list.js +9 -0
  127. package/dist/app/talk/route.d.ts +16 -0
  128. package/dist/app/talk/route.js +142 -0
  129. package/dist/app/workspace.d.ts +58 -0
  130. package/dist/{cli → app}/workspace.js +82 -36
  131. package/dist/app/ws/route.d.ts +25 -0
  132. package/dist/app/ws/route.js +29 -0
  133. package/dist/app/ws/ws.d.ts +31 -0
  134. package/dist/app/ws/ws.js +169 -0
  135. package/dist/board/canvas-chat.d.ts +97 -0
  136. package/dist/board/canvas-chat.js +175 -0
  137. package/dist/board/card-guards.d.ts +15 -0
  138. package/dist/board/card-guards.js +38 -0
  139. package/dist/board/cards/canvas.d.ts +41 -0
  140. package/dist/board/cards/canvas.js +83 -0
  141. package/dist/board/cards/choice.d.ts +20 -0
  142. package/dist/board/cards/choice.js +64 -0
  143. package/dist/board/cards/code.d.ts +9 -0
  144. package/dist/board/cards/code.js +10 -0
  145. package/dist/board/cards/dictation.d.ts +42 -0
  146. package/dist/board/cards/dictation.js +105 -0
  147. package/dist/board/cards/docs.d.ts +47 -0
  148. package/dist/board/cards/docs.js +152 -0
  149. package/dist/board/cards/image.d.ts +13 -0
  150. package/dist/board/cards/image.js +26 -0
  151. package/dist/board/cards/index.d.ts +62 -0
  152. package/dist/board/cards/index.js +144 -0
  153. package/dist/board/cards/kind.d.ts +33 -0
  154. package/dist/board/cards/kind.js +9 -0
  155. package/dist/board/cards/lecture.d.ts +26 -0
  156. package/dist/board/cards/lecture.js +62 -0
  157. package/dist/board/cards/paint.d.ts +38 -0
  158. package/dist/board/cards/paint.js +85 -0
  159. package/dist/board/cards/photo.d.ts +15 -0
  160. package/dist/board/cards/photo.js +29 -0
  161. package/dist/board/cards/read.d.ts +8 -0
  162. package/dist/board/cards/read.js +18 -0
  163. package/dist/board/cards/text.d.ts +20 -0
  164. package/dist/board/cards/text.js +59 -0
  165. package/dist/board/cards/tianzige.d.ts +16 -0
  166. package/dist/board/cards/tianzige.js +64 -0
  167. package/dist/board/cards/tutor.d.ts +72 -0
  168. package/dist/board/cards/tutor.js +134 -0
  169. package/dist/board/cards/word.d.ts +20 -0
  170. package/dist/board/cards/word.js +76 -0
  171. package/dist/board/lecture.d.ts +100 -0
  172. package/dist/board/lecture.js +204 -0
  173. package/dist/board/paper.d.ts +20 -0
  174. package/dist/board/paper.js +76 -0
  175. package/dist/board/parse.d.ts +120 -0
  176. package/dist/board/parse.js +330 -0
  177. package/dist/board/presentation.d.ts +295 -0
  178. package/dist/board/presentation.js +615 -0
  179. package/dist/board/sections.d.ts +16 -0
  180. package/dist/board/sections.js +130 -0
  181. package/dist/brain/api-tools.d.ts +8 -0
  182. package/dist/brain/api-tools.js +190 -0
  183. package/dist/brain/api.d.ts +62 -0
  184. package/dist/brain/api.js +411 -0
  185. package/dist/brain/cli/adapters.d.ts +60 -0
  186. package/dist/brain/cli/adapters.js +91 -0
  187. package/dist/brain/cli/qwen.d.ts +11 -0
  188. package/dist/brain/cli/qwen.js +141 -0
  189. package/dist/brain/cli/run-plan.d.ts +59 -0
  190. package/dist/brain/cli/run-plan.js +71 -0
  191. package/dist/brain/cli/run.d.ts +35 -0
  192. package/dist/brain/cli/run.js +256 -0
  193. package/dist/brain/cli/stream-json.d.ts +18 -0
  194. package/dist/brain/cli/stream-json.js +86 -0
  195. package/dist/brain/cli/types.d.ts +144 -0
  196. package/dist/brain/cli/types.js +3 -0
  197. package/dist/brain/cli/warm.d.ts +53 -0
  198. package/dist/brain/cli/warm.js +103 -0
  199. package/dist/brain/index.d.ts +145 -0
  200. package/dist/brain/index.js +74 -0
  201. package/dist/brain/stream.d.ts +20 -0
  202. package/dist/brain/stream.js +70 -0
  203. package/dist/brain/transcript.d.ts +45 -0
  204. package/dist/brain/transcript.js +132 -0
  205. package/dist/chalk/actions.d.ts +37 -0
  206. package/dist/chalk/actions.js +69 -0
  207. package/dist/chalk/bundle.d.ts +26 -0
  208. package/dist/chalk/bundle.js +69 -0
  209. package/dist/chalk/check.d.ts +28 -0
  210. package/dist/chalk/check.js +291 -0
  211. package/dist/chalk/circle.d.ts +64 -0
  212. package/dist/chalk/circle.js +193 -0
  213. package/dist/chalk/clock.d.ts +84 -0
  214. package/dist/chalk/clock.js +84 -0
  215. package/dist/chalk/geometry.d.ts +44 -0
  216. package/dist/chalk/geometry.js +139 -0
  217. package/dist/chalk/glyphs/capitals.d.ts +12 -0
  218. package/dist/chalk/glyphs/capitals.js +264 -0
  219. package/dist/chalk/glyphs/index.d.ts +21 -0
  220. package/dist/chalk/glyphs/index.js +18 -0
  221. package/dist/chalk/glyphs/letters.d.ts +13 -0
  222. package/dist/chalk/glyphs/letters.js +280 -0
  223. package/dist/chalk/glyphs/metrics.d.ts +33 -0
  224. package/dist/chalk/glyphs/metrics.js +28 -0
  225. package/dist/chalk/glyphs/registry.d.ts +7 -0
  226. package/dist/chalk/glyphs/registry.js +8 -0
  227. package/dist/chalk/glyphs/sample.d.ts +32 -0
  228. package/dist/chalk/glyphs/sample.js +102 -0
  229. package/dist/chalk/glyphs/skeleton.d.ts +64 -0
  230. package/dist/chalk/glyphs/skeleton.js +126 -0
  231. package/dist/chalk/glyphs/types.d.ts +58 -0
  232. package/dist/chalk/glyphs/types.js +17 -0
  233. package/dist/chalk/index.d.ts +23 -0
  234. package/dist/chalk/index.js +15 -0
  235. package/dist/chalk/manifest.d.ts +41 -0
  236. package/dist/chalk/manifest.js +6 -0
  237. package/dist/chalk/paint.d.ts +180 -0
  238. package/dist/chalk/paint.js +210 -0
  239. package/dist/chalk/pointer.d.ts +8 -0
  240. package/dist/chalk/pointer.js +21 -0
  241. package/dist/chalk/prepare.d.ts +11 -0
  242. package/dist/chalk/prepare.js +15 -0
  243. package/dist/chalk/scene-schema.d.ts +199 -0
  244. package/dist/chalk/scene-schema.js +91 -0
  245. package/dist/chalk/seed.d.ts +3 -0
  246. package/dist/chalk/seed.js +10 -0
  247. package/dist/chalk/text-metrics.d.ts +8 -0
  248. package/dist/chalk/text-metrics.js +156 -0
  249. package/dist/chalk/timeline.d.ts +47 -0
  250. package/dist/chalk/timeline.js +84 -0
  251. package/dist/chalk/types.d.ts +150 -0
  252. package/dist/chalk/types.js +8 -0
  253. package/dist/lib/index.d.ts +14 -8
  254. package/dist/lib/index.js +14 -8
  255. package/dist/media/draw.d.ts +23 -0
  256. package/dist/media/draw.js +44 -0
  257. package/dist/media/mp3.d.ts +6 -0
  258. package/dist/media/mp3.js +58 -0
  259. package/dist/media/mp4.d.ts +1 -0
  260. package/dist/media/mp4.js +58 -0
  261. package/dist/media/tts-voices.d.ts +18 -0
  262. package/dist/media/tts-voices.js +606 -0
  263. package/dist/media/tts.d.ts +56 -0
  264. package/dist/media/tts.js +174 -0
  265. package/dist/media/vision.d.ts +25 -0
  266. package/dist/media/vision.js +71 -0
  267. package/dist/memory/commit.d.ts +67 -0
  268. package/dist/memory/commit.js +130 -0
  269. package/dist/memory/context.d.ts +86 -0
  270. package/dist/memory/context.js +97 -0
  271. package/dist/memory/diary.d.ts +84 -0
  272. package/dist/memory/diary.js +183 -0
  273. package/dist/memory/grade.d.ts +2 -0
  274. package/dist/memory/grade.js +7 -0
  275. package/dist/{lib → memory}/plan.d.ts +3 -1
  276. package/dist/{lib → memory}/plan.js +10 -1
  277. package/dist/memory/proposals.d.ts +11 -0
  278. package/dist/memory/proposals.js +43 -0
  279. package/dist/memory/retrieval.d.ts +44 -0
  280. package/dist/memory/retrieval.js +157 -0
  281. package/dist/memory/timetable.d.ts +19 -0
  282. package/dist/memory/timetable.js +95 -0
  283. package/dist/memory/vault-notes.d.ts +165 -0
  284. package/dist/memory/vault-notes.js +359 -0
  285. package/dist/memory/vault.d.ts +70 -0
  286. package/dist/memory/vault.js +169 -0
  287. package/dist/realtime/bailian.d.ts +120 -0
  288. package/dist/realtime/bailian.js +288 -0
  289. package/dist/realtime/cues.d.ts +51 -0
  290. package/dist/realtime/cues.js +94 -0
  291. package/dist/realtime/listen.d.ts +32 -0
  292. package/dist/realtime/listen.js +53 -0
  293. package/dist/realtime/preview.d.ts +23 -0
  294. package/dist/realtime/preview.js +38 -0
  295. package/dist/realtime/prompt.d.ts +8 -0
  296. package/dist/realtime/prompt.js +13 -0
  297. package/dist/realtime/voices.d.ts +19 -0
  298. package/dist/realtime/voices.js +71 -0
  299. package/dist/runtime/activities.d.ts +17 -0
  300. package/dist/runtime/activities.js +46 -0
  301. package/dist/runtime/activity-state.d.ts +22 -0
  302. package/dist/runtime/activity-state.js +83 -0
  303. package/dist/runtime/activity.d.ts +63 -0
  304. package/dist/runtime/activity.js +428 -0
  305. package/dist/runtime/agent-file.d.ts +24 -0
  306. package/dist/runtime/agent-file.js +59 -0
  307. package/dist/runtime/auto-bookkeep.d.ts +30 -0
  308. package/dist/runtime/auto-bookkeep.js +84 -0
  309. package/dist/{lib → runtime/context}/context-pack.d.ts +3 -3
  310. package/dist/runtime/context/context-pack.js +182 -0
  311. package/dist/runtime/context/thread-digest.d.ts +4 -0
  312. package/dist/runtime/context/thread-digest.js +35 -0
  313. package/dist/runtime/context/tutor-rules.d.ts +25 -0
  314. package/dist/runtime/context/tutor-rules.js +47 -0
  315. package/dist/runtime/delivery/delivery.d.ts +94 -0
  316. package/dist/runtime/delivery/delivery.js +145 -0
  317. package/dist/runtime/delivery/playback.d.ts +25 -0
  318. package/dist/runtime/delivery/playback.js +29 -0
  319. package/dist/runtime/delivery/player.d.ts +145 -0
  320. package/dist/runtime/delivery/player.js +221 -0
  321. package/dist/runtime/delivery/queue.d.ts +89 -0
  322. package/dist/runtime/delivery/queue.js +59 -0
  323. package/dist/runtime/home/edit.d.ts +39 -0
  324. package/dist/runtime/home/edit.js +132 -0
  325. package/dist/runtime/home/home.d.ts +180 -0
  326. package/dist/runtime/home/home.js +311 -0
  327. package/dist/runtime/home/store.d.ts +142 -0
  328. package/dist/runtime/home/store.js +440 -0
  329. package/dist/runtime/journal/conversation.d.ts +46 -0
  330. package/dist/runtime/journal/conversation.js +89 -0
  331. package/dist/runtime/journal/events.d.ts +27 -0
  332. package/dist/runtime/journal/events.js +136 -0
  333. package/dist/runtime/journal/kid-log.d.ts +105 -0
  334. package/dist/runtime/journal/kid-log.js +133 -0
  335. package/dist/runtime/journal/ledger.d.ts +17 -0
  336. package/dist/{lib → runtime/journal}/ledger.js +7 -32
  337. package/dist/runtime/journal/mix.d.ts +33 -0
  338. package/dist/runtime/journal/mix.js +88 -0
  339. package/dist/runtime/journal/mouth-index.d.ts +26 -0
  340. package/dist/runtime/journal/mouth-index.js +34 -0
  341. package/dist/runtime/journal/mouth.d.ts +54 -0
  342. package/dist/runtime/journal/mouth.js +102 -0
  343. package/dist/runtime/journal/recorder.d.ts +46 -0
  344. package/dist/runtime/journal/recorder.js +58 -0
  345. package/dist/runtime/journal/store.d.ts +123 -0
  346. package/dist/runtime/journal/store.js +316 -0
  347. package/dist/runtime/kid-input.d.ts +16 -0
  348. package/dist/runtime/kid-input.js +195 -0
  349. package/dist/runtime/kid-view.d.ts +124 -0
  350. package/dist/runtime/kid-view.js +157 -0
  351. package/dist/runtime/lecture.d.ts +86 -0
  352. package/dist/runtime/lecture.js +237 -0
  353. package/dist/runtime/live/call.d.ts +219 -0
  354. package/dist/runtime/live/call.js +1211 -0
  355. package/dist/runtime/live/turns.d.ts +48 -0
  356. package/dist/runtime/live/turns.js +102 -0
  357. package/dist/runtime/runner.d.ts +289 -0
  358. package/dist/runtime/runner.js +898 -0
  359. package/dist/runtime/talk-run.d.ts +21 -0
  360. package/dist/runtime/talk-run.js +34 -0
  361. package/dist/scenes/dictation/match.d.ts +57 -0
  362. package/dist/scenes/dictation/match.js +255 -0
  363. package/dist/scenes/dictation/recognize.d.ts +86 -0
  364. package/dist/scenes/dictation/recognize.js +163 -0
  365. package/dist/scenes/dictation/store.d.ts +112 -0
  366. package/dist/scenes/dictation/store.js +99 -0
  367. package/dist/scenes/look.d.ts +26 -0
  368. package/dist/scenes/look.js +1 -0
  369. package/dist/scenes/paint/painter.d.ts +84 -0
  370. package/dist/scenes/paint/painter.js +170 -0
  371. package/dist/scenes/paint/prompt.d.ts +23 -0
  372. package/dist/scenes/paint/prompt.js +36 -0
  373. package/dist/scenes/talk/en-words.d.ts +8 -0
  374. package/dist/scenes/talk/en-words.js +44 -0
  375. package/dist/scenes/talk/list.d.ts +44 -0
  376. package/dist/scenes/talk/list.js +88 -0
  377. package/dist/scenes/talk/store.d.ts +27 -0
  378. package/dist/scenes/talk/store.js +61 -0
  379. package/dist/scenes/talk/warmup.d.ts +16 -0
  380. package/dist/scenes/talk/warmup.js +39 -0
  381. package/dist/schema/activity.d.ts +149 -0
  382. package/dist/schema/activity.js +113 -0
  383. package/dist/schema/board.d.ts +200 -0
  384. package/dist/schema/board.js +42 -0
  385. package/dist/schema/config.d.ts +353 -80
  386. package/dist/schema/config.js +293 -76
  387. package/dist/schema/context-pack.d.ts +82 -13
  388. package/dist/schema/context-pack.js +97 -10
  389. package/dist/schema/conversation-files.d.ts +43 -0
  390. package/dist/schema/conversation-files.js +26 -0
  391. package/dist/schema/conversation.d.ts +459 -13
  392. package/dist/schema/conversation.js +148 -8
  393. package/dist/schema/events.d.ts +138 -0
  394. package/dist/schema/events.js +1 -0
  395. package/dist/schema/home.d.ts +46 -0
  396. package/dist/schema/home.js +30 -0
  397. package/dist/schema/index.d.ts +19 -4
  398. package/dist/schema/index.js +19 -4
  399. package/dist/schema/json-schema.d.ts +2 -0
  400. package/dist/schema/json-schema.js +23 -0
  401. package/dist/schema/kid-device.d.ts +20 -0
  402. package/dist/schema/kid-device.js +32 -0
  403. package/dist/schema/ledger.d.ts +9 -64
  404. package/dist/schema/ledger.js +7 -31
  405. package/dist/schema/memory.d.ts +73 -0
  406. package/dist/schema/memory.js +47 -0
  407. package/dist/schema/plan.d.ts +2 -2
  408. package/dist/schema/plan.js +2 -2
  409. package/dist/schema/sections.d.ts +32 -25
  410. package/dist/schema/sections.js +21 -22
  411. package/dist/schema/theme.d.ts +25 -0
  412. package/dist/schema/theme.js +26 -0
  413. package/dist/schema/timetable.d.ts +26 -0
  414. package/dist/schema/timetable.js +18 -0
  415. package/dist/schema/workspace.d.ts +41 -0
  416. package/dist/schema/workspace.js +9 -0
  417. package/dist/shared/errors.d.ts +8 -0
  418. package/dist/shared/errors.js +13 -0
  419. package/dist/shared/home.d.ts +2 -0
  420. package/dist/shared/home.js +16 -0
  421. package/dist/shared/human-notes.d.ts +5 -0
  422. package/dist/shared/human-notes.js +7 -0
  423. package/dist/shared/qianwen.d.ts +50 -0
  424. package/dist/shared/qianwen.js +109 -0
  425. package/dist/shared/time.d.ts +9 -0
  426. package/dist/shared/time.js +22 -0
  427. package/dist/shared/tokens.d.ts +18 -0
  428. package/dist/shared/tokens.js +11 -0
  429. package/dist/shared/wav.d.ts +10 -0
  430. package/dist/shared/wav.js +50 -0
  431. package/dist/stage/Assistant-Bold-ZDZZ6JHA.woff2 +0 -0
  432. package/dist/stage/Assistant-Medium-DZ25RZU3.woff2 +0 -0
  433. package/dist/stage/Assistant-Regular-PLF2XOGW.woff2 +0 -0
  434. package/dist/stage/Assistant-SemiBold-CZ5MX6FK.woff2 +0 -0
  435. package/dist/stage/chunk-226TNLQA.js +129 -0
  436. package/dist/stage/chunk-24LGQEKE.js +1 -0
  437. package/dist/stage/chunk-25XV6UY3.js +10 -0
  438. package/dist/stage/chunk-2AZI3NHJ.js +1 -0
  439. package/dist/stage/chunk-2BQZTTBE.js +1 -0
  440. package/dist/stage/chunk-2M7CGY3Y.js +11 -0
  441. package/dist/stage/chunk-2VR4WFQ7.js +10 -0
  442. package/dist/stage/chunk-2ZYXBUWG.js +9 -0
  443. package/dist/stage/chunk-32LAWMGY.js +1 -0
  444. package/dist/stage/chunk-3LEMTSOO.js +11 -0
  445. package/dist/stage/chunk-3QCKGZYE.js +32 -0
  446. package/dist/stage/chunk-44P66WFA.js +1 -0
  447. package/dist/stage/chunk-4AM6FRR6.js +7 -0
  448. package/dist/stage/chunk-4QDE4SUK.js +1 -0
  449. package/dist/stage/chunk-4QESHV3U.js +1 -0
  450. package/dist/stage/chunk-4SG5QPHB.js +2 -0
  451. package/dist/stage/chunk-4T4UVCOC.js +1 -0
  452. package/dist/stage/chunk-4WUEPPG3.js +34 -0
  453. package/dist/stage/chunk-4YCN6UZ5.js +99 -0
  454. package/dist/stage/chunk-5V7ZY2AP.js +1 -0
  455. package/dist/stage/chunk-5VS5Y2VJ.js +6 -0
  456. package/dist/stage/chunk-5W4NO2ZD.js +62 -0
  457. package/dist/stage/chunk-65CRNICM.js +1 -0
  458. package/dist/stage/chunk-66MULO7F.js +5 -0
  459. package/dist/stage/chunk-6COFQTBS.js +162 -0
  460. package/dist/stage/chunk-6VZG3M3I.js +8 -0
  461. package/dist/stage/chunk-7HVDH43T.js +1 -0
  462. package/dist/stage/chunk-7JLJN4EZ.js +8 -0
  463. package/dist/stage/chunk-7QDSP4LN.js +1 -0
  464. package/dist/stage/chunk-7R6OQAO3.js +1 -0
  465. package/dist/stage/chunk-7VTTHZKW.js +7 -0
  466. package/dist/stage/chunk-ATHR5KEN.js +10 -0
  467. package/dist/stage/chunk-B6R5LTP2.js +36 -0
  468. package/dist/stage/chunk-BD4WE264.js +1 -0
  469. package/dist/stage/chunk-BONANU47.js +206 -0
  470. package/dist/stage/chunk-BTVW7OFK.js +89 -0
  471. package/dist/stage/chunk-BUTJIDHG.js +8 -0
  472. package/dist/stage/chunk-C2IPYMML.js +84 -0
  473. package/dist/stage/chunk-C54FTPPV.js +9 -0
  474. package/dist/stage/chunk-C6LOUF2Z.js +90 -0
  475. package/dist/stage/chunk-CFF3PILO.js +339 -0
  476. package/dist/stage/chunk-CI2FQ2JY.js +9 -0
  477. package/dist/stage/chunk-CW5O4RV7.js +12 -0
  478. package/dist/stage/chunk-CYABNQYD.js +1 -0
  479. package/dist/stage/chunk-D7FFA4NS.js +15 -0
  480. package/dist/stage/chunk-DUNNXU6Z.js +8 -0
  481. package/dist/stage/chunk-E3E4Q6JF.js +6 -0
  482. package/dist/stage/chunk-EB3U3LH7.js +9 -0
  483. package/dist/stage/chunk-EGSZ736B.js +8 -0
  484. package/dist/stage/chunk-EOBXW5VQ.js +2 -0
  485. package/dist/stage/chunk-ERZC3B7Y.js +11 -0
  486. package/dist/stage/chunk-ESDOOBIH.js +11 -0
  487. package/dist/stage/chunk-EVU4QAL4.js +178 -0
  488. package/dist/stage/chunk-EVVZI2NY.js +39 -0
  489. package/dist/stage/chunk-FBKAZUKD.js +39 -0
  490. package/dist/stage/chunk-FDVKYQJN.js +1 -0
  491. package/dist/stage/chunk-FGPVYHVR.js +5 -0
  492. package/dist/stage/chunk-FHUD4AZC.js +1 -0
  493. package/dist/stage/chunk-FKUJ2DMY.js +96 -0
  494. package/dist/stage/chunk-FNZGVIJV.js +1 -0
  495. package/dist/stage/chunk-GBYSEGYM.js +78 -0
  496. package/dist/stage/chunk-GCO4TDHX.js +1 -0
  497. package/dist/stage/chunk-GKTML2LG.js +10 -0
  498. package/dist/stage/chunk-GMDIHHXQ.js +11 -0
  499. package/dist/stage/chunk-GOUNACI3.js +10 -0
  500. package/dist/stage/chunk-GXAYATPF.js +3 -0
  501. package/dist/stage/chunk-H2K2DDXV.js +8 -0
  502. package/dist/stage/chunk-H3UJI6ZY.js +13 -0
  503. package/dist/stage/chunk-H6PUGCME.js +7 -0
  504. package/dist/stage/chunk-HNBUIMIG.js +1 -0
  505. package/dist/stage/chunk-HRZY2BJQ.js +10 -0
  506. package/dist/stage/chunk-HSPJGALW.js +30 -0
  507. package/dist/stage/chunk-IBYORHIP.js +25 -0
  508. package/dist/stage/chunk-IHF4EWTY.js +1 -0
  509. package/dist/stage/chunk-ISBRPNKI.js +1 -0
  510. package/dist/stage/chunk-IZ3OI3C2.js +2 -0
  511. package/dist/stage/chunk-JEFZAC2R.js +1 -0
  512. package/dist/stage/chunk-JFIGRDPO.js +1 -0
  513. package/dist/stage/chunk-JFVYBOOC.js +9 -0
  514. package/dist/stage/chunk-JGD4TUTQ.js +1 -0
  515. package/dist/stage/chunk-JO4BEHDH.js +4 -0
  516. package/dist/stage/chunk-JOWBS42C.js +1 -0
  517. package/dist/stage/chunk-JP3TM2TG.js +1 -0
  518. package/dist/stage/chunk-JVK2C52O.js +1 -0
  519. package/dist/stage/chunk-K4I76XBX.js +14 -0
  520. package/dist/stage/chunk-KA6CZZ4M.js +1 -0
  521. package/dist/stage/chunk-KESSJ36M.js +1 -0
  522. package/dist/stage/chunk-LKATEVRU.js +1 -0
  523. package/dist/stage/chunk-LS4EJ2EI.js +1 -0
  524. package/dist/stage/chunk-LUKJQC2X.js +70 -0
  525. package/dist/stage/chunk-LWULR3SM.js +1 -0
  526. package/dist/stage/chunk-LWVRFMKX.js +2 -0
  527. package/dist/stage/chunk-LXC4ZBPZ.js +1 -0
  528. package/dist/stage/chunk-M2UP255H.js +1 -0
  529. package/dist/stage/chunk-MAPPXUZQ.js +231 -0
  530. package/dist/stage/chunk-MBMPW7Z5.js +1 -0
  531. package/dist/stage/chunk-MD3HMMTK.js +1 -0
  532. package/dist/stage/chunk-MLPCUIKR.js +17 -0
  533. package/dist/stage/chunk-MNQIRPDQ.js +8 -0
  534. package/dist/stage/chunk-MRG7MJVS.js +1 -0
  535. package/dist/stage/chunk-MU6EXW72.js +10 -0
  536. package/dist/stage/chunk-MVU2X6LU.js +4 -0
  537. package/dist/stage/chunk-N6UA5CZV.js +36 -0
  538. package/dist/stage/chunk-NLZIT2TJ.js +7 -0
  539. package/dist/stage/chunk-NOJR3J7M.js +1 -0
  540. package/dist/stage/chunk-NT7ARDOL.js +1 -0
  541. package/dist/stage/chunk-NWOGMPZH.js +1 -0
  542. package/dist/stage/chunk-NXE4KMG3.js +40 -0
  543. package/dist/stage/chunk-O4YCZXD2.js +257 -0
  544. package/dist/stage/chunk-OAJZ7HLK.js +1 -0
  545. package/dist/stage/chunk-OCFCFASO.js +1 -0
  546. package/dist/stage/chunk-ODGPG5RY.js +7 -0
  547. package/dist/stage/chunk-ODUEA52Q.js +3 -0
  548. package/dist/stage/chunk-OGDJ3FCI.js +1 -0
  549. package/dist/stage/chunk-OLDJ55TT.js +1 -0
  550. package/dist/stage/chunk-OOCL4ATI.js +2 -0
  551. package/dist/stage/chunk-OQEFDUDV.js +1 -0
  552. package/dist/stage/chunk-OQWVEWG7.js +4 -0
  553. package/dist/stage/chunk-OUIX6BGK.js +1 -0
  554. package/dist/stage/chunk-OV7OZYUO.js +7 -0
  555. package/dist/stage/chunk-PFGDY33O.js +1 -0
  556. package/dist/stage/chunk-PFJDUJB3.js +139 -0
  557. package/dist/stage/chunk-PGEW76ER.js +1 -0
  558. package/dist/stage/chunk-PP76TAQX.js +32 -0
  559. package/dist/stage/chunk-PTBOP4OT.js +2 -0
  560. package/dist/stage/chunk-PX2RVHCK.js +1 -0
  561. package/dist/stage/chunk-Q7K3PNAD.js +1 -0
  562. package/dist/stage/chunk-QDDPLZDB.js +1 -0
  563. package/dist/stage/chunk-QLGLZ77F.js +1 -0
  564. package/dist/stage/chunk-QOPFDFHI.js +1 -0
  565. package/dist/stage/chunk-QXT4KAEJ.js +1 -0
  566. package/dist/stage/chunk-R4YVZCIT.js +1 -0
  567. package/dist/stage/chunk-R6P6EHWA.js +62 -0
  568. package/dist/stage/chunk-RCH3OXBI.js +9 -0
  569. package/dist/stage/chunk-RHPE44I2.js +1 -0
  570. package/dist/stage/chunk-RJ2R4FVC.js +1 -0
  571. package/dist/stage/chunk-RJH2YVTD.js +1 -0
  572. package/dist/stage/chunk-RLWWW5OB.js +6 -0
  573. package/dist/stage/chunk-S3WO35Z7.js +120 -0
  574. package/dist/stage/chunk-S7ZGX6MW.js +1 -0
  575. package/dist/stage/chunk-SIAWX27B.js +1 -0
  576. package/dist/stage/chunk-SLG4X622.js +1 -0
  577. package/dist/stage/chunk-SLJRBC77.js +168 -0
  578. package/dist/stage/chunk-SRORWQJZ.js +1 -0
  579. package/dist/stage/chunk-STZTUIIF.js +2 -0
  580. package/dist/stage/chunk-SVQ6MWNV.js +9 -0
  581. package/dist/stage/chunk-TL3HLL2S.js +132 -0
  582. package/dist/stage/chunk-U3DOE6SF.js +24 -0
  583. package/dist/stage/chunk-UABQIZKW.js +6 -0
  584. package/dist/stage/chunk-UDK3R764.js +1 -0
  585. package/dist/stage/chunk-UFF4E54B.js +41 -0
  586. package/dist/stage/chunk-UFP5Q4AY.js +1 -0
  587. package/dist/stage/chunk-UMH2TSW2.js +72 -0
  588. package/dist/stage/chunk-UTASVNF5.js +10 -0
  589. package/dist/stage/chunk-UW7ML5ML.js +88 -0
  590. package/dist/stage/chunk-V3J7F6OP.js +1 -0
  591. package/dist/stage/chunk-VEHP5B5Q.js +5 -0
  592. package/dist/stage/chunk-VRXWB733.js +9 -0
  593. package/dist/stage/chunk-VVDHBBS5.js +5 -0
  594. package/dist/stage/chunk-VYFOH6FU.js +106 -0
  595. package/dist/stage/chunk-W3VZTLQS.js +3 -0
  596. package/dist/stage/chunk-W7WNRWTZ.js +8 -0
  597. package/dist/stage/chunk-WHUCV53C.js +1 -0
  598. package/dist/stage/chunk-WULMYHIF.js +1 -0
  599. package/dist/stage/chunk-X54EX7AW.js +9 -0
  600. package/dist/stage/chunk-X565ISZM.js +1 -0
  601. package/dist/stage/chunk-XGZMDECB.js +1 -0
  602. package/dist/stage/chunk-XHONC4RF.js +172 -0
  603. package/dist/stage/chunk-XIK4XQ6E.js +24 -0
  604. package/dist/stage/chunk-XJQQWFTE.js +1 -0
  605. package/dist/stage/chunk-XM4WOU3I.js +13 -0
  606. package/dist/stage/chunk-XM7Y5HP5.js +38 -0
  607. package/dist/stage/chunk-XNYYRGD5.js +292 -0
  608. package/dist/stage/chunk-XOYVR3SV.js +1 -0
  609. package/dist/stage/chunk-XQIW5HCE.js +1 -0
  610. package/dist/stage/chunk-YEWL7FUW.js +8 -0
  611. package/dist/stage/chunk-YI55PY3V.js +1 -0
  612. package/dist/stage/chunk-YM63HI6W.js +1 -0
  613. package/dist/stage/chunk-YNLGLU4P.js +9 -0
  614. package/dist/stage/chunk-YTNMNOWP.js +1 -0
  615. package/dist/stage/chunk-YV62XKTC.js +1 -0
  616. package/dist/stage/chunk-YVBA3QW6.js +1 -0
  617. package/dist/stage/chunk-Z2SY2HOC.js +1 -0
  618. package/dist/stage/chunk-ZBTCQEBK.js +10 -0
  619. package/dist/stage/chunk-ZCUFN74D.js +1 -0
  620. package/dist/stage/chunk-ZHOULXEJ.js +11 -0
  621. package/dist/stage/chunk-ZTRZIET2.js +1 -0
  622. package/dist/stage/index.html +11 -0
  623. package/dist/stage/stage.css +1 -0
  624. package/dist/stage/stage.js +1 -0
  625. package/dist/ui/dev/dev-page.d.ts +1 -0
  626. package/dist/ui/dev/dev-page.js +2248 -0
  627. package/dist/ui/dev/dev-theme.d.ts +6 -0
  628. package/dist/ui/dev/dev-theme.js +67 -0
  629. package/dist/ui/dev/qr-page.d.ts +8 -0
  630. package/dist/ui/dev/qr-page.js +61 -0
  631. package/dist/ui/dev/voice-gallery-page.d.ts +1 -0
  632. package/dist/ui/dev/voice-gallery-page.js +121 -0
  633. package/dist/ui/dev/voice-scenes.d.ts +21 -0
  634. package/dist/ui/dev/voice-scenes.js +30 -0
  635. package/dist/ui/dictation/en-box.d.ts +2 -0
  636. package/dist/ui/dictation/en-box.js +86 -0
  637. package/dist/ui/dictation/en-page.d.ts +1 -0
  638. package/dist/ui/dictation/en-page.js +484 -0
  639. package/dist/ui/dictation/page.d.ts +1 -0
  640. package/dist/ui/dictation/page.js +1084 -0
  641. package/dist/ui/dictation/parent-page.d.ts +1 -0
  642. package/dist/ui/dictation/parent-page.js +234 -0
  643. package/dist/ui/dictation/reel-mode.d.ts +1 -0
  644. package/dist/ui/dictation/reel-mode.js +87 -0
  645. package/dist/ui/dictation/reel-page.d.ts +1 -0
  646. package/dist/ui/dictation/reel-page.js +62 -0
  647. package/dist/ui/dictation/reel.d.ts +163 -0
  648. package/dist/ui/dictation/reel.js +436 -0
  649. package/dist/ui/dictation/ui.d.ts +44 -0
  650. package/dist/ui/dictation/ui.js +80 -0
  651. package/dist/ui/dictation/unlock.d.ts +7 -0
  652. package/dist/ui/dictation/unlock.js +16 -0
  653. package/dist/ui/kid/audio-client.d.ts +11 -0
  654. package/dist/ui/kid/audio-client.js +74 -0
  655. package/dist/ui/kid/board-mark-art.d.ts +37 -0
  656. package/dist/ui/kid/board-mark-art.js +5 -0
  657. package/dist/ui/kid/board-mark.d.ts +24 -0
  658. package/dist/ui/kid/board-mark.js +58 -0
  659. package/dist/ui/kid/kid-log.d.ts +15 -0
  660. package/dist/ui/kid/kid-log.js +87 -0
  661. package/dist/ui/kid/kid-nav.d.ts +11 -0
  662. package/dist/ui/kid/kid-nav.js +22 -0
  663. package/dist/ui/kid/kid-page.d.ts +9 -0
  664. package/dist/ui/kid/kid-page.js +3719 -0
  665. package/dist/ui/kid/letters.d.ts +26 -0
  666. package/dist/ui/kid/letters.js +51 -0
  667. package/dist/ui/kid/photo-edit.d.ts +83 -0
  668. package/dist/ui/kid/photo-edit.js +106 -0
  669. package/dist/ui/kid/photo-ui.d.ts +23 -0
  670. package/dist/ui/kid/photo-ui.js +60 -0
  671. package/dist/ui/kid/reel.d.ts +419 -0
  672. package/dist/ui/kid/reel.js +648 -0
  673. package/dist/ui/kid/tianzige.d.ts +8 -0
  674. package/dist/ui/kid/tianzige.js +45 -0
  675. package/dist/ui/kid/tutor-face.d.ts +35 -0
  676. package/dist/ui/kid/tutor-face.js +84 -0
  677. package/dist/ui/kid/voice-ui.d.ts +70 -0
  678. package/dist/ui/kid/voice-ui.js +316 -0
  679. package/dist/ui/kid/voice-view.d.ts +71 -0
  680. package/dist/ui/kid/voice-view.js +75 -0
  681. package/dist/ui/kid/word-draw.d.ts +2 -0
  682. package/dist/ui/kid/word-draw.js +107 -0
  683. package/dist/ui/kid/word-emoji.d.ts +10 -0
  684. package/dist/ui/kid/word-emoji.js +66 -0
  685. package/dist/ui/kid/word-layout.d.ts +25 -0
  686. package/dist/ui/kid/word-layout.js +29 -0
  687. package/dist/ui/parent/parent-home-page.d.ts +1 -0
  688. package/dist/ui/parent/parent-home-page.js +414 -0
  689. package/dist/ui/parent/parent-page.d.ts +2 -0
  690. package/dist/ui/parent/parent-page.js +507 -0
  691. package/dist/ui/shared/brand.d.ts +36 -0
  692. package/dist/ui/shared/brand.js +51 -0
  693. package/dist/ui/shared/favicon.d.ts +12 -0
  694. package/dist/ui/shared/favicon.js +96 -0
  695. package/dist/ui/shared/icon.d.ts +9 -0
  696. package/dist/ui/shared/icon.js +35 -0
  697. package/dist/ui/shared/inline-lib.d.ts +1 -0
  698. package/dist/ui/shared/inline-lib.js +28 -0
  699. package/dist/ui/shared/logo.d.ts +31 -0
  700. package/dist/ui/shared/logo.js +43 -0
  701. package/dist/ui/shared/page-dom.d.ts +12 -0
  702. package/dist/ui/shared/page-dom.js +36 -0
  703. package/dist/ui/shared/png.d.ts +1 -0
  704. package/dist/ui/shared/png.js +45 -0
  705. package/dist/ui/shared/qr-svg.d.ts +3 -0
  706. package/dist/ui/shared/qr-svg.js +32 -0
  707. package/dist/ui/shared/qr.d.ts +14 -0
  708. package/dist/ui/shared/qr.js +281 -0
  709. package/dist/ui/shared/reel-dock.d.ts +22 -0
  710. package/dist/ui/shared/reel-dock.js +365 -0
  711. package/dist/ui/shared/tutor-color.d.ts +15 -0
  712. package/dist/ui/shared/tutor-color.js +47 -0
  713. package/dist/ui/talk/page.d.ts +6 -0
  714. package/dist/ui/talk/page.js +294 -0
  715. package/grades/grade-2/README.md +11 -0
  716. package/grades/grade-2/VALIDATION.md +41 -0
  717. package/grades/grade-2/agents/chinese-tutor/activities//344/275/240/350/257/264/346/210/221/347/224/273.md +157 -0
  718. package/grades/grade-2/agents/chinese-tutor/activities//344/275/240/350/257/264/346/210/221/347/224/273./344/276/213/345/255/220.md +78 -0
  719. package/grades/grade-2/agents/chinese-tutor/activities//344/276/213/345/255/220/345/233/276//345/200/237/344/274/236.jpg +0 -0
  720. package/grades/grade-2/agents/chinese-tutor/activities//344/276/213/345/255/220/345/233/276//345/260/217/347/214/264/346/221/230/346/241/203.jpg +0 -0
  721. package/grades/grade-2/agents/chinese-tutor/activities//345/206/231/350/257/235.md +64 -0
  722. package/grades/grade-2/agents/chinese-tutor/activities//345/206/231/350/257/235./344/276/213/345/255/220.md +31 -0
  723. package/grades/grade-2/agents/chinese-tutor/activities//345/220/254/345/206/231.md +48 -0
  724. package/grades/grade-2/agents/chinese-tutor/activities//345/244/215/344/271/240.md +79 -0
  725. package/grades/grade-2/agents/chinese-tutor/activities//345/244/215/344/271/240./344/276/213/345/255/220.md +35 -0
  726. package/grades/grade-2/agents/chinese-tutor/activities//345/260/217/350/257/276/345/240/202.md +53 -0
  727. package/grades/grade-2/agents/chinese-tutor/activities//346/211/271/346/224/271.md +81 -0
  728. package/grades/grade-2/agents/chinese-tutor/activities//346/211/271/346/224/271./344/276/213/345/255/220.md +35 -0
  729. package/grades/grade-2/agents/chinese-tutor/activities//347/234/213/345/233/276/350/257/264/350/257/235.md +94 -0
  730. package/grades/grade-2/agents/chinese-tutor/activities//347/234/213/345/233/276/350/257/264/350/257/235./344/276/213/345/255/220.md +63 -0
  731. package/grades/grade-2/agents/chinese-tutor/activities//351/242/204/344/271/240.md +82 -0
  732. package/grades/grade-2/agents/chinese-tutor/activities//351/242/204/344/271/240./344/276/213/345/255/220.md +35 -0
  733. package/grades/grade-2/agents/chinese-tutor.md +59 -0
  734. package/grades/grade-2/agents/english-tutor/activities//345/217/243/350/257/255/350/257/276.md +149 -0
  735. package/grades/grade-2/agents/english-tutor/activities//345/217/243/350/257/255/350/257/276./344/276/213/345/255/220.md +13 -0
  736. package/grades/grade-2/agents/english-tutor/activities//345/220/254/345/206/231.md +47 -0
  737. package/grades/grade-2/agents/english-tutor/activities//345/244/215/344/271/240.md +78 -0
  738. package/grades/grade-2/agents/english-tutor/activities//345/244/215/344/271/240./344/276/213/345/255/220.md +35 -0
  739. package/grades/grade-2/agents/english-tutor/activities//345/260/217/350/257/276/345/240/202.md +53 -0
  740. package/grades/grade-2/agents/english-tutor/activities//346/211/271/346/224/271.md +80 -0
  741. package/grades/grade-2/agents/english-tutor/activities//346/211/271/346/224/271./344/276/213/345/255/220.md +35 -0
  742. package/grades/grade-2/agents/english-tutor/activities//351/242/204/344/271/240.md +86 -0
  743. package/grades/grade-2/agents/english-tutor/activities//351/242/204/344/271/240./344/276/213/345/255/220.md +35 -0
  744. package/grades/grade-2/agents/english-tutor.md +57 -0
  745. package/grades/grade-2/agents/math-tutor/activities//345/244/215/344/271/240.md +78 -0
  746. package/grades/grade-2/agents/math-tutor/activities//345/244/215/344/271/240./344/276/213/345/255/220.md +35 -0
  747. package/grades/grade-2/agents/math-tutor/activities//345/260/217/350/257/276/345/240/202.md +56 -0
  748. package/grades/grade-2/agents/math-tutor/activities//345/260/217/350/257/276/345/240/202./344/276/213/345/255/220.md +52 -0
  749. package/grades/grade-2/agents/math-tutor/activities//346/211/271/346/224/271.md +80 -0
  750. package/grades/grade-2/agents/math-tutor/activities//346/211/271/346/224/271./344/276/213/345/255/220.md +35 -0
  751. package/grades/grade-2/agents/math-tutor/activities//351/242/204/344/271/240.md +81 -0
  752. package/grades/grade-2/agents/math-tutor/activities//351/242/204/344/271/240./344/276/213/345/255/220.md +35 -0
  753. package/grades/grade-2/agents/math-tutor.md +51 -0
  754. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/index.json +44 -0
  755. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-1.mp3 +0 -0
  756. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-2.mp3 +0 -0
  757. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-3.mp3 +0 -0
  758. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-4.mp3 +0 -0
  759. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-5.mp3 +0 -0
  760. package/grades/grade-2/examples/2026-10-27-pingjunfen/bake.json +1 -0
  761. package/grades/grade-2/examples/2026-10-27-pingjunfen/manifest.json +63 -0
  762. package/grades/grade-2/examples/2026-10-27-pingjunfen/scene.json +247 -0
  763. package/grades/grade-2/examples/2026-10-27-pingjunfen.md +40 -0
  764. package/grades/grade-2/examples/2026-10-27-pingjunfen.ts +26 -0
  765. package/grades/grade-2/examples//345/271/263/345/235/207/345/210/206./344/276/213/345/255/220.md +24 -0
  766. package/grades/grade-2/examples//346/225/260/345/255/246/345/271/263/345/235/207/345/210/206.md +42 -0
  767. package/grades/grade-2/validation/2026-10-27.json +4410 -0
  768. package/package.json +32 -12
  769. package/skills/chalk-cli/SKILL.md +62 -0
  770. package/skills/chalk-scene/SKILL.md +91 -0
  771. package/skills/chalk-teaching/SKILL.md +82 -0
  772. package/skills/chalk-teaching/models//344/272/244/351/224/231/346/225/260/345/210/227/345/210/206/350/241/214.md +8 -0
  773. package/skills/chalk-teaching/models//345/207/221/345/215/201.md +7 -0
  774. package/skills/chalk-teaching/models//345/221/250/346/234/237/350/247/204/345/276/213.md +6 -0
  775. package/skills/chalk-teaching/models//345/256/236/347/211/251/345/233/276-/345/242/236/345/207/217.md +6 -0
  776. package/skills/chalk-teaching/models//345/256/236/347/211/251/345/233/276-/346/257/224/345/244/232/345/260/221-/346/261/202/345/244/247/346/225/260/346/261/202/345/260/217/346/225/260.md +7 -0
  777. package/skills/chalk-teaching/models//345/256/236/347/211/251/345/233/276-/346/257/224/345/244/232/345/260/221-/346/261/202/345/267/256.md +6 -0
  778. package/skills/chalk-teaching/models//345/260/217/346/243/222/350/277/233/344/275/215/345/212/240.md +7 -0
  779. package/skills/chalk-teaching/models//345/260/217/346/243/222/351/200/200/344/275/215/345/207/217.md +6 -0
  780. package/skills/chalk-teaching/models//346/216/222/351/230/237/347/202/271/351/230/265.md +7 -0
  781. package/skills/chalk-teaching/models//346/227/266/351/227/264/346/225/260/350/275/264.md +6 -0
  782. package/skills/chalk-teaching/models//346/245/274/345/261/202/351/227/264/351/232/224/345/233/276.md +7 -0
  783. package/skills/chalk-teaching/models//347/240/264/345/215/201.md +7 -0
  784. package/skills/chalk-teaching/models//347/253/226/345/274/217/351/200/200/344/275/215.md +6 -0
  785. package/skills/chalk-teaching/models//347/272/277/346/256/265/345/233/276.md +7 -0
  786. package/skills/chalk-teaching/models-index.md +24 -0
  787. package/skills/chalk-teaching/references//350/256/262/350/247/243/346/250/241/346/235/277/344/270/211/346/241/243.md +32 -0
  788. package/skills/chalk-teaching/references//350/257/264/346/230/216/346/226/207/344/273/266.md +102 -0
  789. package/skills/chalk-verify/SKILL.md +57 -0
  790. package/skills/chalk-verify/references//350/257/204/345/210/244/346/240/207/345/207/206.md +69 -0
  791. package/skills/cotutor-analyze/SKILL.md +106 -0
  792. package/skills/cotutor-analyze/references//345/221/275/344/273/244/344/270/216/346/226/207/344/273/266.md +31 -0
  793. package/skills/cotutor-board/SKILL.md +373 -0
  794. package/skills/cotutor-board/references/README.md +38 -0
  795. package/skills/cotutor-board/references/canvas.md +68 -0
  796. package/skills/cotutor-board/references/choice.md +55 -0
  797. package/skills/cotutor-board/references/code.md +46 -0
  798. package/skills/cotutor-board/references/image.md +52 -0
  799. package/skills/cotutor-board/references/lecture.md +69 -0
  800. package/skills/cotutor-board/references/paint.md +77 -0
  801. package/skills/cotutor-board/references/photo.md +61 -0
  802. package/skills/cotutor-board/references/read.md +51 -0
  803. package/skills/cotutor-board/references/text.md +69 -0
  804. package/skills/cotutor-board/references/tianzige.md +78 -0
  805. package/skills/cotutor-board/references/word.md +91 -0
  806. package/skills/cotutor-home/SKILL.md +169 -0
  807. package/skills/cotutor-home/references/dictation.md +97 -0
  808. package/skills/cotutor-home/references/tutor.md +148 -0
  809. package/skills/cotutor-home/references//345/221/275/344/273/244.md +21 -0
  810. package/skills/cotutor-home/references//351/246/226/351/241/265/350/257/255/346/263/225.md +142 -0
  811. package/skills/cotutor-tune/SKILL.md +147 -0
  812. package/skills/cotutor-tune/references//345/255/227/346/256/265.md +50 -0
  813. package/skills/cotutor-tutor/SKILL.md +261 -0
  814. package/skills/cotutor-tutor/references//344/270/212/344/270/213/346/226/207/345/214/205.md +78 -0
  815. package/themes/default/kid.css +86 -0
  816. package/themes/default/theme.json +26 -0
  817. package/agents/chinese-teacher.md +0 -19
  818. package/agents/homework-aide.md +0 -17
  819. package/agents/math-teacher.md +0 -19
  820. package/agents/planner.md +0 -18
  821. package/agents/reading-teacher.md +0 -19
  822. package/dist/cli/doctor.d.ts +0 -19
  823. package/dist/cli/doctor.js +0 -190
  824. package/dist/cli/init.js +0 -114
  825. package/dist/cli/main.js +0 -123
  826. package/dist/cli/serve.d.ts +0 -19
  827. package/dist/cli/serve.js +0 -22
  828. package/dist/cli/skeleton.d.ts +0 -21
  829. package/dist/cli/skeleton.js +0 -82
  830. package/dist/cli/workspace.d.ts +0 -61
  831. package/dist/lib/agent-file.d.ts +0 -10
  832. package/dist/lib/agent-file.js +0 -16
  833. package/dist/lib/context-pack.js +0 -46
  834. package/dist/lib/conversation.d.ts +0 -28
  835. package/dist/lib/conversation.js +0 -44
  836. package/dist/lib/kid-view.d.ts +0 -26
  837. package/dist/lib/kid-view.js +0 -38
  838. package/dist/lib/ledger.d.ts +0 -21
  839. package/dist/lib/sections.d.ts +0 -12
  840. package/dist/lib/sections.js +0 -151
  841. package/dist/lib/transcript.d.ts +0 -36
  842. package/dist/lib/transcript.js +0 -95
  843. package/dist/server/app.d.ts +0 -13
  844. package/dist/server/app.js +0 -45
  845. /package/dist/{cli → app/cli}/main.d.ts +0 -0
@@ -0,0 +1,91 @@
1
+ # word — 单词卡
2
+
3
+ ## 是什么
4
+
5
+ 单词卡:孩子问「X 英语怎么说」、一节里教新词时用的卡。一张卡一个英文单词,写在四线三格里,讲到这张卡时一笔一笔写一遍。卡上没有中文。点开是慢速:慢念,再按自然拼读一段一段慢写。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:孩子问「X 英语怎么说」「X 怎么拼」。
10
+ - 用:一节里的新词,一个词一张。
11
+ - 用:短词组也行,如 `ice cream`、`T-shirt`。
12
+ - 别用:一串词一起跟读 → `read`。
13
+ - 别用:句子、课文 → `read`。
14
+ - 别用:中文意思写进卡里 → 说在讲稿里,英文在前、中文在后。
15
+
16
+ ## 写法
17
+
18
+ - 第一行:emoji 和英文单词,如 `🍎 apple`。
19
+ - 能画出来的东西配一个 emoji。抽象的词(like、the)不用配。
20
+ - 第二行:自然拼读分段,用 `-` 隔开,如 `ap-ple`、`sh-ee-p`。
21
+ - 分段拼起来要和单词一模一样。一个字母一段也行,如 `c-a-t`。
22
+ - 一张卡一个词,最多三个词、16 个字母。
23
+ - 只写字母、空格、撇号和连字符。不写音标,不写中文谐音。
24
+
25
+ ## 例子
26
+
27
+ <!-- expect {"kind":"word","props":{"word":"apple","chunks":["ap","ple"],"emoji":"🍎"}} -->
28
+ ```word
29
+ 🍎 apple
30
+ ap-ple
31
+ ```
32
+
33
+ <!-- expect {"kind":"word","props":{"word":"sheep","chunks":["sh","ee","p"],"emoji":"🐑"}} -->
34
+ ```word
35
+ 🐑 sheep
36
+ sh-ee-p
37
+ ```
38
+
39
+ <!-- expect {"kind":"word","props":{"word":"ice cream","chunks":["ice ","cr","ea","m"],"emoji":"🍦"}} -->
40
+ ```word
41
+ 🍦 ice cream
42
+ ice cr-ea-m
43
+ ```
44
+
45
+ <!-- expect {"kind":"word","props":{"word":"like"}} -->
46
+ ```word
47
+ like
48
+ ```
49
+
50
+ ## 反例
51
+
52
+ 写了中文意思,中文会被去掉,卡照常出:
53
+
54
+ <!-- expect {"kind":"word","props":{"word":"apple","emoji":"🍎"}} -->
55
+ ```word
56
+ 🍎 apple 苹果
57
+ ```
58
+
59
+ 分段拼不回这个词,分段不要了,卡照常出:
60
+
61
+ <!-- expect {"kind":"word","props":{"word":"apple"}} -->
62
+ ```word
63
+ apple
64
+ a-pl
65
+ ```
66
+
67
+ 整句写不进一张单词卡,会退成一段文字:
68
+
69
+ <!-- expect {"kind":"text","warning":true} -->
70
+ ```word
71
+ I like apples very much
72
+ ```
73
+
74
+ 只有中文也解析不成:
75
+
76
+ <!-- expect {"kind":"text","warning":true} -->
77
+ ```word
78
+ 苹果
79
+ ```
80
+
81
+ ## 孩子看到什么
82
+
83
+ 卡上是 emoji 和四线三格里的单词,右边一个「听」。讲到这张卡时一笔一笔写一遍。点「听」按正常速度念这个词。点卡打开大的:一边慢念,一边按分段一段一段慢写,两段两个颜色,写完合拢成一个词、颜色退掉,再慢念一遍。孩子点哪一段,那段再慢写一遍。讲稿的 `[apple]` 落在这张卡上,讲到时这张卡亮起来,词上不画荧光。
84
+
85
+ ## 你会收回什么
86
+
87
+ 没有——单词卡不记状态(点了几遍不告诉你)。
88
+
89
+ ## 状态的形状
90
+
91
+ 没有。
@@ -0,0 +1,169 @@
1
+ ---
2
+ name: cotutor-home
3
+ description: 排 cotutor 孩子端的首页。孩子学完之后,家长在 workspace 根开编程助手说「总结一下今天」「排明天的首页」「给语文老师加个预习按钮」「把那几个字放首页」「上次推荐的他点了没有」时用。读今天的对话、说清学了什么停在哪,商量下次从哪几个按钮进、首页放哪几张卡;家长点头才写草稿,家长明说才发布。不是:改老师的提示词或 vault(→ cotutor-tune)、查老师为什么那样答(→ cotutor-analyze)。
4
+ ---
5
+
6
+ <!-- 给人看
7
+ 谁读:家长在 workspace 根开的编程助手
8
+ 能改:机器件,upgrade 覆盖;references/ 下的首页语法.md、命令.md、tutor.md 由 src/app/skills/home-doc.ts 与 cards/tutor/card.md 生成
9
+ 改了:在试用 workspace 里开编程助手说一句「总结一下今天」(《写提示词.md》§一)
10
+ -->
11
+
12
+ # 排首页
13
+
14
+ 你在一个 cotutor workspace 的根目录(有 cotutor.json)。
15
+
16
+ 孩子端打开就是首页:
17
+
18
+ - 老师的头像叠在一起,一次只展开一位老师的卡,卡上几个按钮。孩子点哪个,就带着哪个意思进那位老师。
19
+ - 一进来展开的是草稿里第一张老师卡的那位。最想让孩子先做的,写在最前面。
20
+ - 还有几张给孩子看的卡:一段字、几个字的田字格、一张图、一段点读。
21
+
22
+ 首页由你和家长商量,**家长批准后发布**。孩子只看得到发布的那份。
23
+
24
+ ## 铁律
25
+
26
+ - **发布要家长在这次对话里明说**(「发吧」「可以发布」)。草稿随便改;cotutor home publish 只在明说之后跑。
27
+ - 不写 vault。总结要留下来,走记账(第二步),由应用落进日记。
28
+ - 不改 conversations/、ledger/、cotutor.json、老师文件。
29
+ - home/published.json 与 home/history/ 是机器件,不手改。
30
+ - 孩子看得到的字(按钮、卡)不评判:不写对错、分数、名次、「真棒」「聪明」「最…」。
31
+ - agents/<name>.md 是老师文件,由 cotutor 读正文传给 Qwen。不要当子代理派,也不要替老师回答孩子。
32
+
33
+ ## 一、看今天
34
+
35
+ 1. `cotutor home show`:现在发布的是哪份、每个按钮被点了几次。先知道上次推荐的,孩子选了什么。
36
+ 2. 有脸的老师逐位读 conversations/<老师>/<今天>.json。有脸的老师 = cotutor.json 里键以 -tutor 结尾、enabled、不 hidden 的。要看的:
37
+ - 话题(thread)。
38
+ - 孩子的话(from: kid)。带 via、且 button 是数字的那条,是按钮上的字,不是孩子说的。
39
+ - 每轮的 kidText 与 section.cards。
40
+ - parentText:老师写给家长的。
41
+ - remembered。
42
+ 3. 细看一轮,用 `cotutor show <老师> <job>`。卡的 id(`<job>/<n>`)在「卡」那一行。
43
+ 4. 孩子在卡上做的:conversations/<老师>/<日期>.<job>.cards/<n>.json。
44
+
45
+ 总结在对话里说,不落文件。每位老师两三行:学了什么、停在哪、哪里卡住。引孩子的原话,或卡上做的。
46
+
47
+ ## 二、记账
48
+
49
+ 要留下来的,走记账:
50
+
51
+ 1. 家长给值得记的话题打星:`cotutor rate <老师> <话题> <1-5>`。到 vault.keepScore 的,摘要才进日记。
52
+ 2. 再跑 `cotutor bookkeep <老师>`。
53
+
54
+ - 记账每个话题起老师一轮;记完,每位有记忆的老师再整理一轮记忆,结果直接落进记忆文件。**花钱,先问。**
55
+ - 家长说不记,就跳过。
56
+ - 记完读当天日记核对一眼。日记在 vault 的 `paths.diary` 下,缺省 `日记/<日期>.md`。
57
+
58
+ ## 三、商量下次
59
+
60
+ 先在对话里列提案,不写文件。
61
+
62
+ 材料:
63
+
64
+ - 今天停在哪。
65
+ - 日记最近的「- 观察:」。
66
+ - 本周计划里各位老师那段、课程表。
67
+ - 这科这学期的入口文件与教材:下一课是什么。
68
+ - 上次首页被点了什么。
69
+
70
+ ### 老师卡
71
+
72
+ 每位老师一张。不写的,应用会补一张只有「新话题」的。
73
+
74
+ - 按钮最多 4 个。「新话题」应用自己加,不写。
75
+ - 孩子看的字最多 16 个,孩子的口吻:「我要预习小蝌蚪找妈妈」「接着写看图写话」「再练两道退位减法」。
76
+ - 每个按钮下一行「讲法:」,写给老师:从哪开始、重点是什么、讲到哪收。孩子看不到。
77
+ - 「接着」要指到那一天的那个话题:日期 + 话题 id。老师会拿到那个话题最后一节的讲稿与卡。今天的话题,就是接着聊。
78
+ - 「小课堂」要指到 `bundles/` 里一份课包,或 `lectures/` 里一份视频的 id。孩子先从头看完这一课,才能问老师。
79
+ - 看完怎么聊,在这位老师的 `agents/<老师>/activities/小课堂.md`;没有这份,小课堂按钮不出(首页检查报)。
80
+ - 小课堂的讲法写孩子在这一课常卡在哪,别写课里已经讲过的。
81
+ - 「activity」是老师的一种做法,写在 `agents/<老师>/activities/<名>.md`(如语文老师的「你说我画」)。`cotutor activity check <老师>` 列出这位老师有哪些、每个要家长填什么。
82
+ - 看图说话、你说我画都是语文老师的 activity:`activity 看图说话`、`activity 你说我画`。孩子在新话题里拍看图说话,老师不走那套;要他照那套说,就摆按钮。
83
+ - 小课堂看完要接着照某个 activity 聊(如看图说话的课),在小课堂按钮下面挂一行 `activity: 看图说话`。
84
+ - activity 按钮写 `activity <名> [孩子看到的字]`,下面一行一个参数(`词: 播种、羞愧`),照那个文件「## 家长填的」填;同一个 activity 填不同的参数可以是两个按钮(你说我画、我来出题)。
85
+ - 家长想改 activity 本身怎么带,不在这里改,用 cotutor-tune。
86
+
87
+ ### 老师想要的小课堂
88
+
89
+ 老师讲到要画出来才讲得清的题,会在给家长的尾巴里写一段 `## 想要小课堂`:`题面:` 和 `讲法:`。
90
+
91
+ - 家长问「老师想要哪些小课堂」,在 `conversations/<老师>/<日期>.json` 里找 `parentText` 带「## 想要小课堂」的消息,从近往远列。
92
+ - 照题面和讲法做一堂课包小课堂(下一节),挂到那位老师的卡上。
93
+
94
+ ### 课包小课堂
95
+
96
+ - 课包用 `cotutor chalk` 做:场景怎么写看 chalk-scene 技能,怎么讲看 chalk-teaching,命令看 chalk-cli。`build` 直接出到 `bundles/<id>/`,再 `dub` 配音。
97
+ - 画面上孩子可能画到的东西,在场景里起名字:几笔合起来是一样东西写 `groups`,单独一笔写 `label`。写法见 chalk-scene。
98
+ - 名字用讲稿里的说法,如「散的 3 根小棒」。
99
+ <!-- 为什么:孩子在它上面画了,老师拿到的是这个名字;不起名字只能说「第 1 步画的 3 条线」。 -->
100
+ - 起了名字要重新 build。配音不用重配。
101
+ - 挂首页之前烤一下画面:`cotutor chalk bake <id>`(跑过 snap 就已经烤了)。烤过的课包,孩子端不用现画,iPad 上顺;首页检查会提醒没烤的。
102
+ - 改了画面要重烤;只改讲稿、重配音不用。
103
+
104
+ ### 视频小课堂
105
+
106
+ 家长要放一段现成的视频当小课堂,在 `lectures/<id>/` 放两个文件:
107
+
108
+ - `video.mp4`:声音烧在视频里。
109
+ - `lecture.md`:第一行 `# 标题`,下面一行一句「分:秒 原话」,是这一句在视频里的起点和说的话。
110
+ - 原话照视频里说的抄,老师靠它知道课里讲了什么。
111
+ - 句子按时间排,第一句从 `0:00` 起。
112
+ - 可以在开头写 frontmatter `subject: 数学`,首页检查拿它对老师的科目。
113
+ - id 用小写字母、数字、连字符,如 `2026-10-06-pingjunfen`。
114
+
115
+ ```markdown
116
+ ---
117
+ subject: 数学
118
+ ---
119
+ # 平均分:一个一个轮着分
120
+
121
+ 0:00 12 块饼干分给 3 个小朋友,怎么分才公平?
122
+ 0:05 一个一个轮着分:你一块、我一块、他一块。
123
+ 0:11 分完了,每人 4 块,一样多。这就是平均分。
124
+ ```
125
+
126
+ 写好挂上首页按钮,`cotutor home check` 会说哪里不对。
127
+ - 没什么要推荐的老师,不写按钮。
128
+
129
+ ### 其余的卡
130
+
131
+ 按需,一两张就够。写在哪,孩子就在哪看到:
132
+
133
+ - 写在某张老师卡后面:只在那位老师展开时看到。跟这位老师的事有关的,写在他后面。
134
+ - 写在所有老师卡前面:谁展开都看得到。只放今晚先看一眼的那一句。
135
+ - 听写卡写了老师(`dictation chinese-tutor`),就归那位老师,不看写在哪。
136
+
137
+ - 要孩子今晚先看一眼的一句话:`text`。
138
+ - 要再写一遍的字:`tianzige`。
139
+ - 一张图:`image`。
140
+ - 一段要读的:`read`。
141
+
142
+ 每条提案带一句「为什么」。家长改、删、加,直到点头。
143
+
144
+ ## 四、写草稿、检查、预览
145
+
146
+ 1. 家长点头后,写 home/draft.md,整份覆盖。
147
+ - 先读已发布那份的原文当底稿:home/published.json 里 `source` 指的那个文件。家长可能在家长端改过首页(加了开场按钮、设了这周的词、调了老师的先后),那些都在原文里,不在 draft.md 里。家长没说要删的,照留。
148
+ - 按钮下面的 `留到: <日期>` 是家长定的留多久,过了的按钮可以去掉。
149
+ - 写法见 references/首页语法.md,老师卡的细则在 references/tutor.md。
150
+ - 最后写「## 为什么这么排」,把第三步每条的「为什么」放进去。这段给家长,孩子看不到。
151
+ 2. `cotutor home check`。「要改」的改到没有;「提醒」的跟家长说一声。
152
+ 3. 想先看样子:`cotutor home check` 列出孩子会看到的每张卡、每位老师的按钮与讲法;要看真页面,发布后在孩子端首页看,不满意改草稿再发(每次发布留一份历史,`--from` 能回去)。
153
+ 4. 家长要改就改草稿,再 check。
154
+
155
+ ## 五、发布
156
+
157
+ 家长明说之后:`cotutor home publish`。
158
+
159
+ - 它再检查一遍、留历史,打印发布的 id。
160
+ - 孩子端刷新就是新首页,不用重起服务。
161
+ - 发完告诉家长:发了哪几张卡、哪几条提醒还在。
162
+
163
+ 回到以前的某份:`cotutor home publish --from home/history/<id>.md`,同样先问。
164
+
165
+ ## 报告怎么写
166
+
167
+ 1. 总结先行:每位老师两三行。
168
+ 2. 再是下次的提案:按卡列,带为什么。
169
+ 3. 最后是做了什么:记没记账、花了多少、草稿写没写、check 结果、发没发布。
@@ -0,0 +1,97 @@
1
+ # dictation — 听写
2
+
3
+ ## 是什么
4
+
5
+ 听写卡:首页上一张,写着「听写 · 6 个词」。孩子点开,老师一个词一个词念,孩子用 Apple Pencil 在田字格里写。全部写完,书上的字淡淡叠在孩子写的上面,孩子自己对。只用在首页。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:孩子今天要听写生字词,家长把词表给你。
10
+ - 用:上次听写没写全的词,排进下一次。
11
+ - 别用:教一个字怎么写 → `tianzige`。
12
+ - 用:英语单词听写:一张卡里都写英文单词,孩子在四线三格里写整个单词。
13
+ - 别用:板书里 → 只能用在首页。
14
+
15
+ ## 写法
16
+
17
+ 围栏标签 `dictation <老师的键>`。老师的键可以不写,不写就用语文老师的声音。
18
+
19
+ 正文一行一个词:
20
+
21
+ - 词是一到四个汉字,不带拼音和标点。
22
+ - 要说明怎么念,在词后面空一格接着写。例如 `鼓励 鼓励,老师鼓励我的鼓励`。
23
+ - 同音的、单个字的词,都写上念法。例如 `叶 树叶的叶`。
24
+ - 念法是孩子听到的全部。它会被念两遍。
25
+ - 最多 20 个词。
26
+ - 英文单词前面可以配一个 emoji,如 `🚌 bus a red bus`。能画出来的东西才配,抽象的词(like、the)不配。孩子写完对答案时才看到。
27
+
28
+ ## 例子
29
+
30
+ <!-- expect {"kind":"dictation","props":{"tutor":"chinese-tutor","words":[{"chars":"春天"},{"chars":"鼓励","say":"鼓励,老师鼓励我的鼓励"},{"chars":"叶","say":"树叶的叶"}]}} -->
31
+ ```dictation chinese-tutor
32
+ 春天
33
+ 鼓励 鼓励,老师鼓励我的鼓励
34
+ 叶 树叶的叶
35
+ ```
36
+
37
+ 不写老师,用语文老师的声音:
38
+
39
+ <!-- expect {"kind":"dictation","props":{"words":[{"chars":"花朵"},{"chars":"雪花"}]}} -->
40
+ ```dictation
41
+ 花朵
42
+ 雪花
43
+ ```
44
+
45
+ 英文单词,英语老师的声音念:
46
+
47
+ <!-- expect {"kind":"dictation","props":{"tutor":"english-tutor","lang":"en","words":[{"chars":"red"},{"chars":"yellow","say":"yellow, a yellow bus"},{"chars":"ice-cream","emoji":"🍦"}]}} -->
48
+ ```dictation english-tutor
49
+ red
50
+ yellow yellow, a yellow bus
51
+ 🍦 ice-cream
52
+ ```
53
+
54
+ ## 反例
55
+
56
+ 词里夹了拼音,解析不成,整张卡退成一段文字:
57
+
58
+ <!-- expect {"kind":"text","warning":true} -->
59
+ ```dictation
60
+ 鼓励gǔlì
61
+ ```
62
+
63
+ 汉字的词和英文单词写在一张卡里,解析不成:
64
+
65
+ <!-- expect {"kind":"text","warning":true} -->
66
+ ```dictation
67
+ 春天
68
+ red
69
+ ```
70
+
71
+ 一个词超过四个字,解析不成:
72
+
73
+ <!-- expect {"kind":"text","warning":true} -->
74
+ ```dictation
75
+ 画蛇添足画
76
+ ```
77
+
78
+ ## 孩子看到什么
79
+
80
+ 首页上一张卡,写着「听写」和几个词,看不到字。点开后:
81
+
82
+ 1. 老师念第一个词,念两遍。孩子听不清可以点「再念」。
83
+ 2. 左边是听写本,一个词一行;右边一个大田字格,一次写一个字,写好点「这个字写好了」。
84
+ 3. 不会写可以点「不会写,给答案」:书上的字一笔一笔写给他看,再照着灰色描红写一遍。
85
+ 4. 全部写完,书上的字淡淡叠在孩子写的字上。孩子点一个字,书上的字就在他写的字上一笔一笔写一遍。
86
+ 5. 少写了笔、多写了笔、空着的词,卡上问一句「这个再写一遍?」,不画叉,不打分。看过答案的词不再问。
87
+ 6. 孩子可以对任何一个词说「我想再写」。
88
+
89
+ 英文单词:一个单词一个四线三格,写整个单词;写完正确的单词淡淡叠在上面,配了 emoji 的放在旁边,孩子自己对,不逐个字母比,也不问「再写一遍?」,想再写自己点。
90
+
91
+ ## 你会收回什么
92
+
93
+ 孩子写的每一笔都会记下来,连同时刻。应用逐字对照书上的笔画,记下少了哪一笔、多了几笔、笔顺对不对、写得偏不偏、哪个字看了答案。家长在 `/dictation/parent` 看结果,在 `/dictation/reel` 看录像。卡上没有状态。
94
+
95
+ ## 状态的形状
96
+
97
+ 没有。
@@ -0,0 +1,148 @@
1
+ # tutor — 老师卡
2
+
3
+ ## 是什么
4
+
5
+ 老师卡:首页上一位老师一张,卡上几个按钮,孩子点哪个就带着哪个意思进这位老师——新开一个话题、接着以前的某个话题、说一句开场话让老师照家长备好的讲法讲起来,或者先看一堂做好的小课堂。只用在首页。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:排首页时,给每位要推荐下一步的老师写一张:预习下一课、接着没讲完的、再练一练。
10
+ - 用:同一位老师有两三件事,写在同一张卡上,一行一个按钮。
11
+ - 别用:在板书里写老师卡 → 板书里退成一段文字;老师之间不互相推荐。
12
+ - 别用:没什么要推荐的老师不必写 → 应用会补一张只有「新话题」的。
13
+ - 别用:同一位老师写两张 → 只认第一张,检查会让你合并。
14
+
15
+ ## 写法
16
+
17
+ 围栏标签 `tutor <老师的键>`(cotutor.json tutors 里的英文名,如 `chinese-tutor`)。正文一行一个按钮,孩子看到的字就是这一行,最多 16 个字,孩子的口吻;最多 4 个按钮。
18
+
19
+ - 普通的一行 = **开场按钮**:孩子点了,这行字就作为孩子的第一句发给老师,新开一个话题。
20
+ - `接着 <日期> <话题> <孩子看到的字>` = **接着按钮**:接着那天的那个话题(话题 = 那个话题第一条消息的 job,如 `1930-1`,`cotutor show` 与对话索引里都有)。今天的话题就是接着聊;以前的新开一个会话,老师会拿到那个话题最后一节的讲稿与卡。
21
+ - `小课堂 <课包或视频的 id> <孩子看到的字>` = **小课堂按钮**:孩子点了先铺满看这一课(课包 `bundles/<id>/`,或视频 `lectures/<id>/`),看完才能开口;开口那句新开一个话题,老师拿到课的每句原话与孩子看的情况。
22
+ - `activity <名> [孩子看到的字]` = **activity 按钮**:进这位老师的一个 activity(`agents/<老师>/activities/<名>.md`,如你说我画)。字不写就是 activity 的名字。孩子点了和开场按钮一样,新开一个话题,老师照那个 activity 文件带。
23
+ - 小课堂按钮下面可以挂一行 `activity: <名>`:孩子看完课开口那条起,老师照那个 activity 带(参数用缺省)。如看图说话的课,挂 `activity: 看图说话`。
24
+ - activity 按钮下面 `名: 值` 的行是这个 activity 的参数(家长填的),一行一个。有哪些参数、什么类型、能不能空,看那个文件的「## 家长填的」;检查会对。孩子看不到。
25
+ - `讲法: …` 挂在上一个按钮下面,写给老师的:从哪开始、重点是什么、讲到哪收。可以写多行。孩子看不到。
26
+ - `留到: <日期>` 挂在上一个按钮下面:这个按钮留到那天(含那天),过了孩子就看不到。不写就一直留着。
27
+ - `新话题` 不用写,应用永远放第一个。
28
+
29
+ ## 例子
30
+
31
+ <!-- expect {"kind":"tutor","props":{"tutor":"chinese-tutor","buttons":[{"kind":"start","label":"我要预习小蝌蚪找妈妈","brief":"第 22 课。先带他把 1–3 自然段读顺,重点字 塘、脑、袋"},{"kind":"continue","label":"接着写看图写话","date":"2026-09-16","thread":"1930-1","brief":"上次第二句卡住了,先把他写的两句念给他听"}]}} -->
32
+ ```tutor chinese-tutor
33
+ 我要预习小蝌蚪找妈妈
34
+ 讲法: 第 22 课。先带他把 1–3 自然段读顺,重点字 塘、脑、袋
35
+ 接着 2026-09-16 1930-1 接着写看图写话
36
+ 讲法: 上次第二句卡住了,先把他写的两句念给他听
37
+ ```
38
+
39
+ 小课堂按钮(课包在 `bundles/` 里,或视频在 `lectures/` 里,检查会查):
40
+
41
+ <!-- expect {"kind":"tutor","props":{"tutor":"math-tutor","buttons":[{"kind":"lecture","label":"13 减 8 怎么拆","bundle":"2026-09-18-po13-jian-8","brief":"他常把 13 当成 1 和 3"}]}} -->
42
+ ```tutor math-tutor
43
+ 小课堂 2026-09-18-po13-jian-8 13 减 8 怎么拆
44
+ 讲法: 他常把 13 当成 1 和 3
45
+ ```
46
+
47
+ 小课堂看完接着照 activity 带:
48
+
49
+ <!-- expect {"kind":"tutor","props":{"tutor":"chinese-tutor","buttons":[{"kind":"lecture","label":"看图说话怎么说","bundle":"2026-10-08-kantu","activity":"看图说话"}]}} -->
50
+ ```tutor chinese-tutor
51
+ 小课堂 2026-10-08-kantu 看图说话怎么说
52
+ activity: 看图说话
53
+ ```
54
+
55
+ 只今天用的开场按钮:
56
+
57
+ <!-- expect {"kind":"tutor","props":{"tutor":"chinese-tutor","buttons":[{"kind":"start","label":"我要读课文","brief":"第 22 课,读顺 1–3 自然段","until":"2026-10-10"}]}} -->
58
+ ```tutor chinese-tutor
59
+ 我要读课文
60
+ 讲法: 第 22 课,读顺 1–3 自然段
61
+ 留到: 2026-10-10
62
+ ```
63
+
64
+ activity 按钮(你说我画;填了「词」就是我来出题):
65
+
66
+ <!-- expect {"kind":"tutor","props":{"tutor":"chinese-tutor","buttons":[{"kind":"activity","label":"你说我画","activity":"你说我画","params":{}},{"kind":"activity","label":"我来出题","activity":"你说我画","params":{"词":"播种、睡大觉、满满、羞愧"},"brief":"他上周把羞愧说成害羞,落到幅上时问一句"}]}} -->
67
+ ```tutor chinese-tutor
68
+ activity 你说我画
69
+ activity 你说我画 我来出题
70
+ 词: 播种、睡大觉、满满、羞愧
71
+ 讲法: 他上周把羞愧说成害羞,落到幅上时问一句
72
+ ```
73
+
74
+ 只要「新话题」的老师,正文空着(也可以不写这张卡):
75
+
76
+ <!-- expect {"kind":"tutor","props":{"tutor":"english-tutor","buttons":[]}} -->
77
+ ```tutor english-tutor
78
+ ```
79
+
80
+ ## 反例
81
+
82
+ 按钮的字太长(要跟老师说的话写进了按钮)解析不成,整张卡退成一段文字,检查报「要改」:
83
+
84
+ <!-- expect {"kind":"text","warning":true} -->
85
+ ```tutor math-tutor
86
+ 再练两道退位减法,先让他说怎么想,跨十那一步慢一点
87
+ ```
88
+
89
+ `接着` 没写日期和话题:
90
+
91
+ <!-- expect {"kind":"text","warning":true} -->
92
+ ```tutor chinese-tutor
93
+ 接着 小蝌蚪找妈妈
94
+ ```
95
+
96
+ `小课堂` 后面只写了课名,没写课包 id:
97
+
98
+ <!-- expect {"kind":"text","warning":true} -->
99
+ ```tutor math-tutor
100
+ 小课堂 13减8怎么拆
101
+ ```
102
+
103
+ 课包 id 写错(或课包还没做),解析得过,首页检查报「要改」:`bundles/<id>/` 不在或读不出来。
104
+
105
+ `留到:` 后面写的不是日期:
106
+
107
+ <!-- expect {"kind":"text","warning":true} -->
108
+ ```tutor chinese-tutor
109
+ 我要读课文
110
+ 留到: 明天
111
+ ```
112
+
113
+ `activity` 后面没写名字:
114
+
115
+ <!-- expect {"kind":"text","warning":true} -->
116
+ ```tutor chinese-tutor
117
+ activity
118
+ ```
119
+
120
+ `activity:` 挂在开场按钮下面(只能挂在小课堂按钮下面):
121
+
122
+ <!-- expect {"kind":"text","warning":true} -->
123
+ ```tutor chinese-tutor
124
+ 我要看图说话
125
+ activity: 看图说话
126
+ ```
127
+
128
+ activity 的名字写错、参数写错或少了要填的,解析得过,首页检查报「要改」(对的是那个 activity 文件)。
129
+
130
+ `讲法:` 前面没有按钮:
131
+
132
+ <!-- expect {"kind":"text","warning":true} -->
133
+ ```tutor chinese-tutor
134
+ 讲法: 先读课文
135
+ 我要预习小蝌蚪找妈妈
136
+ ```
137
+
138
+ ## 孩子看到什么
139
+
140
+ 首页最上面,一位老师一张卡:头像、名字,下面一个学科色大气泡「新话题 · 想问我什么?」,然后是你写的(开场按钮与 activity 按钮是带 ▶ 的大胶囊,接着按钮带 ↻;小课堂是一张带预览图的海报,图上一个播放键,下面写课名与课长)。点开场或接着按钮,老师页打开、按钮上的字立刻发出去,老师接着就讲;点新话题是空白的老师页,等孩子开口。今天从同一个按钮聊过的,在老师页的空白板上接(新话题一个胶囊;activity、小课堂先问接着还是重新开始),不占按钮。今天的条数用完、或服务不通,整张卡变灰。讲法孩子永远看不到。
141
+
142
+ ## 你会收回什么
143
+
144
+ 没有卡上的状态。孩子点了哪个按钮,记在那条消息的 `via` 上(`cotutor home show` 汇总);老师那边,开场与接着按钮的那条消息的上下文包里有 `home:`(按钮的字与讲法),接着以前话题的还有 `continue:`,小课堂看完开口那条还有 `lecture:`(课的每句原话与看的情况);activity 按钮起的话题,每条都有 `activity:`(哪个 activity、家长填的参数、应用算的);那个文件「老师怎么带」一节就是这个话题的系统提示,人设、卡、记忆都是它自己的。
145
+
146
+ ## 状态的形状
147
+
148
+ 没有。
@@ -0,0 +1,21 @@
1
+ # 命令(机器生成,别改)
2
+
3
+ 在 workspace 根跑;完整用法 cotutor --help。
4
+
5
+ ```
6
+ cotutor show <老师> <job> [<日期>] [--json] [--evals] [--workspace <dir>] 看一轮:问了什么、上下文包、当时的老师文件与技能 hash、讲稿与卡、读了什么、token 与用时、给家长的尾巴;--json 是家长端「看原文」同一份数据,给编程助手分析用
7
+ cotutor rate <老师> <话题> <1-5> [--date <日期>] 给一个话题打星(与家长端同一条路;≥ vault.keepScore 的话题记账时摘要才进日记)
8
+ cotutor bookkeep <老师> [--date <日期>] [--thread <话题>]... 记账:这天每个还没记过的话题各起一轮记账任务,老师回「## 记账」,应用写进 vault 的日记(话题名、孩子问、摘要、观察)
9
+ cotutor home check [--published] [--json] 检查首页草稿 home/draft.md(或已发布的那份):孩子会看到哪几张卡、每位老师的按钮、要改的与提醒(带行号);不花钱
10
+ cotutor home publish [--force] [--from <文件>] [--json] 发布首页:检查 → 留历史 home/history/<id>.md → 写 home/published.json(孩子端只读它);有要改的不发,--force 丢掉那几张照发;--from 发另一份(如历史)
11
+ cotutor home show [--json] 现在发布的是哪份、几天前、每个按钮被点了几次(哪天、哪个话题)
12
+ ```
13
+
14
+ ## 文件
15
+
16
+ | 文件 | 是什么 |
17
+ |---|---|
18
+ | `home/draft.md` | 草稿:你写、家长可改;孩子端不读 |
19
+ | `home/published.json` | 已发布的那份(publish 生成,机器件,别手改);孩子端只读它 |
20
+ | `home/history/<id>.md` | 每次发布的原文 |
21
+ | `conversations/<老师>/<日期>.json` | 一天的对话索引;消息的 `via` = 从首页哪个按钮进来的(`{home, button, label}`),`continues` = 接着哪天哪个话题 |