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,38 @@
1
+ # 卡的种类(索引)
2
+
3
+ 每种卡一份协议:是什么、什么时候用 / 别用、写法、例子、反例、孩子看到什么、你会收回什么、状态的形状。讲解前只读需要的那一两张;总表在 ../SKILL.md。机器文件,init / upgrade 刷新。
4
+
5
+ - **text**(text.md)—— 板上的一段字:定义、结论、公式、一句要记住的话、题面。一张卡一个意思,能独立被指着讲三句。
6
+ - 用在:给一个概念下定义、放一个公式、写一句要记住的话、写题面(没有选项、不用孩子填)。
7
+ - 用在:小节标题——只写一行 `# 标题`,板上出一行无底的字,不算卡。
8
+ - **read**(read.md)—— 一行一段、点哪段听哪段的卡:原文、古诗、课文、生词、单词表。每段会在后台配成一段音(你配了音色的话),孩子点了就念。
9
+ - 用在:要孩子反复听、跟着读的东西——古诗、课文原句、单词(英文后面可以跟中文)。
10
+ - 用在:超过两行的原文。`text` 卡是给你讲的,这张是给孩子读的。
11
+ - **choice**(choice.md)—— 一道选择题:问题 + 几个选项,答案只有你知道。孩子在舞台里点大按钮选,选了「交给老师」就到你下一轮的上下文包里。
12
+ - 用在:一节讲完,要孩子回答一个能选的问题;放在这节**末尾**,末句讲稿就是这个问题,停下等孩子。
13
+ - 用在:选项都短(数字、几个字)最好——短选项会横排成一行胶囊。
14
+ - **image**(image.md)—— 一张图 + 图注:孩子拍的作业、产物里的图、网上的图。
15
+ - 用在:讲孩子拍来的作业(上下文包 `photos:` 里的路径),指着图讲。
16
+ - 用在:一张现成的插图能说清的概念。
17
+ - **tianzige**(tianzige.md)—— 田字格:孩子问「这个字怎么写」时用的卡,一到四个汉字,每个字一个格,讲到这张卡时逐笔写一遍,之后孩子点哪个字,哪个字再写一遍。笔顺是现成的数据,不是你写的。
18
+ - 用在:孩子问「X 怎么写」「X 的笔顺」;讲生字、讲词语时要孩子看清怎么落笔。
19
+ - 用在:一个词就写一张,`鼓励` 两个字放一张,孩子看得到它们是一个词。
20
+ - **word**(word.md)—— 单词卡:孩子问「X 英语怎么说」、一节里教新词时用的卡。一张卡一个英文单词,写在四线三格里,讲到这张卡时一笔一笔写一遍。卡上没有中文。点开是慢速:慢念,再按自然拼读一段一段慢写。
21
+ - 用在:孩子问「X 英语怎么说」「X 怎么拼」。
22
+ - 用在:一节里的新词,一个词一张。
23
+ - 用在:短词组也行,如 `ice cream`、`T-shirt`。
24
+ - **lecture**(lecture.md)—— 孩子看过的小课堂里的一段,铺满放,带课里原来的声音。上下文包有 `lecture:` 才有课可放。
25
+ - 用在:孩子问的道理课里讲过。放那一段,别自己再讲一遍。
26
+ - 用在:孩子画了一处(`marks:`),放画的那一刻所在的一段。
27
+ - **canvas**(canvas.md)—— 孩子自己在上面画的一块板:笔、橡皮、黑红蓝三色、撤销、清空。可以给一幅底图(课包的终帧、几个骨架元素,或孩子刚拍的作业照片)让孩子在上面标画,也可以空白只给题目。「给老师看」会导出一张 png 给你。
28
+ - 用在:「画一画」「标出来」「圈出来」这类要孩子动手的题:画高、标直角、圈出错的那步。
29
+ - 用在:一节末尾,末句讲稿就是这个要求。
30
+ - 用在:上下文包里有 photos 时,把那张照片做底图,让孩子在自己的作业上圈出错的那道、把答案写上去。
31
+ - **paint**(paint.md)—— 孩子说清楚的一个故事,分好幅交给画家,应用画成一张连环画(四幅时 2×2,像练习册)。出题时带上题干和词语宝库,就是一道看图说话题。
32
+ - 用在:「你说我画」里,孩子把整段连着说过一遍、和你分好幅以后。
33
+ - 用在:「我来出题」里,词都落到了幅上、题干也定了。
34
+ - **photo**(photo.md)—— 请孩子拍一张照片发给你:看图说话的那幅图、写好的那一页、做完的那道题。
35
+ - 用在:要看孩子手边的东西(书上的图、作业),请他拍下来发给你。
36
+ - 用在:孩子写完了、画完了,请他拍给你看。
37
+ - **code**(code.md)—— 原样显示、不念的一块字:代码、要保留缩进与符号的东西。
38
+ - 用在:教编程时的代码;要孩子一字不差看的东西(竖式、表格)。
@@ -0,0 +1,68 @@
1
+ # canvas — 画板
2
+
3
+ ## 是什么
4
+
5
+ 孩子自己在上面画的一块板:笔、橡皮、黑红蓝三色、撤销、清空。可以给一幅底图(课包的终帧、几个骨架元素,或孩子刚拍的作业照片)让孩子在上面标画,也可以空白只给题目。「给老师看」会导出一张 png 给你。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:「画一画」「标出来」「圈出来」这类要孩子动手的题:画高、标直角、圈出错的那步。
10
+ - 用:一节末尾,末句讲稿就是这个要求。
11
+ - 用:上下文包里有 photos 时,把那张照片做底图,让孩子在自己的作业上圈出错的那道、把答案写上去。
12
+ - 别用:答案是一个数或一个词 → 讲稿里问,孩子开口说;能选的 → `choice`。
13
+ - 别用:一节里放两张画板。
14
+
15
+ ## 写法
16
+
17
+ - 第一行是底,后面的行是题目。标签后面的词也可以当题目。
18
+ - 底有四种:
19
+ - 课包 id:那幅图的终帧做底,孩子在上面标画。
20
+ - 一张图的路径:照 `photos:` 里那样的 `captures/…` 相对路径写,照片做底。
21
+ - 一段行内骨架 JSON:`{"skeletons":[…]}`,课包场景的元素写法(chalk),不超过 40 个。
22
+ - 什么底都没有:只写题目,就是空白画板。
23
+
24
+ ## 例子
25
+
26
+ <!-- expect {"kind":"canvas","props":{"base":null,"prompt":"画一个三角形,标出它的一条高。"}} -->
27
+ ```canvas
28
+ 画一个三角形,标出它的一条高。
29
+ ```
30
+
31
+ <!-- expect {"kind":"canvas","props":{"base":{"bundle":"2026-09-10-guilv"},"prompt":"把每次少的那个数圈出来。"}} -->
32
+ ```canvas
33
+ 2026-09-10-guilv
34
+ 把每次少的那个数圈出来。
35
+ ```
36
+
37
+ <!-- expect {"kind":"canvas","props":{"base":{"image":"captures/2026-09-14/1620-1.jpg"},"prompt":"把算错的那道圈出来。"}} -->
38
+ ```canvas
39
+ captures/2026-09-14/1620-1.jpg
40
+ 把算错的那道圈出来。
41
+ ```
42
+
43
+ ## 反例
44
+
45
+ 行内骨架不是合法 JSON,解析不成:
46
+
47
+ <!-- expect {"kind":"text","warning":true} -->
48
+ ```canvas
49
+ {"skeletons": [
50
+ ```
51
+
52
+ ## 孩子看到什么
53
+
54
+ 紫色卡:题目 + 「点开画一画」(照片做底的,卡上先是那张照片的小图)。点开铺满整屏:顶栏是题目一行和「给老师看」;左边一列七个大钮(笔 / 橡皮 / 黑红蓝 / 撤销 / 清空),最底下是你的小头像;你给的底图是灰的。
55
+
56
+ 他画的时候可以按住你的小头像说话,嘴看着画接一句,不交给你。嘴有时也会主动看着画说一句、问一句。轻点「给老师看」是交画;按住它说话,是画和这句话一起交给你。
57
+
58
+ 交过之后卡上就是孩子画的那张图,锁住了,只能看、不能再画;要他再画,出一张新卡。
59
+
60
+ ## 你会收回什么
61
+
62
+ `<job>/<n> canvas「题目」 画了 12 笔(红 8、蓝 4),画了约 3 分钟,清空重画过 1 次,清掉的那几版:/…/captures/2026-09-10/1621-2.jpg(用 Read 看),图:/…/conversations/math-tutor/2026-09-10.1620-1.cards/3.png(用 Read 看)`。没清空过就没有那一段。
63
+
64
+ 图是绝对路径,交了画的那轮有 Read,先看图再回;看不了图就靠笔数。他画的时候说过的话在上下文包 `live:` 的 `draw:` 里。
65
+
66
+ ## 状态的形状
67
+
68
+ `{"ink": [...], "image": "conversations/…/3.png", "cleared": [{"at": …, "from": …, "strokes": 12, "image": "captures/…jpg"}]}` —— 孩子画的元素(画板的 ink 层)、导出的 png 路径(服务端写)、清空过的几版(清空的时刻、那一版第一笔的时刻、几笔、清空前存的图)。
@@ -0,0 +1,55 @@
1
+ # choice — 选择题
2
+
3
+ ## 是什么
4
+
5
+ 一道选择题:问题 + 几个选项,答案只有你知道。孩子在舞台里点大按钮选,选了「交给老师」就到你下一轮的上下文包里。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:一节讲完,要孩子回答一个能选的问题;放在这节**末尾**,末句讲稿就是这个问题,停下等孩子。
10
+ - 用:选项都短(数字、几个字)最好——短选项会横排成一行胶囊。
11
+ - 别用:开放的问题(「你觉得为什么?」)→ 直接在讲稿里问,孩子说话答。
12
+ - 别用:一节里放两道选择题;一节一问。
13
+
14
+ ## 写法
15
+
16
+ 第一行是问题,后面每行 `- [ ] 选项`,对的那项写 `- [x]`(标了多个就是多选)。答案孩子看不到。
17
+
18
+ ## 例子
19
+
20
+ <!-- expect {"kind":"choice","props":{"question":"底 6 厘米、高 4 厘米的三角形,面积是多少?","options":["24 平方厘米","12 平方厘米","10 平方厘米"],"answer":[1]}} -->
21
+ ```choice
22
+ 底 6 厘米、高 4 厘米的三角形,面积是多少?
23
+ - [ ] 24 平方厘米
24
+ - [x] 12 平方厘米
25
+ - [ ] 10 平方厘米
26
+ ```
27
+
28
+ <!-- expect {"kind":"choice","props":{"options":["苹果","香蕉","西瓜"],"answer":[0,2],"multi":true}} -->
29
+ ```choice
30
+ 下面哪些是圆的?
31
+ - [x] 苹果
32
+ - [ ] 香蕉
33
+ - [x] 西瓜
34
+ ```
35
+
36
+ ## 反例
37
+
38
+ 只有问题没有选项,解析不成,退成一段文字:
39
+
40
+ <!-- expect {"kind":"text","warning":true} -->
41
+ ```choice
42
+ 只有问题没有选项?
43
+ ```
44
+
45
+ ## 孩子看到什么
46
+
47
+ 紫色卡:问题加粗,选项一行一个(都短就横排);卡上永远不画对错。点卡开舞台:大按钮,选一个(多选能选几个)就存下,底部「交给老师」。末句是问句、停下等孩子时,这张卡会自动推到舞台等答。交给老师以后这张卡锁住,改不了、不能再交;要他再选一次,出一张新卡。
48
+
49
+ ## 你会收回什么
50
+
51
+ 孩子选了、交了以后,下一条消息的上下文包 `cards:` 段里一行:`<job>/<n> choice「问题」 选了「B 12 平方厘米」(答案:「B 12 平方厘米」)`。对错由你口头说,卡上不显示。
52
+
53
+ ## 状态的形状
54
+
55
+ `{"picked": [1]}` —— 选了的下标,按点的顺序;多选可以多个。
@@ -0,0 +1,46 @@
1
+ # code — 代码或原样的文字
2
+
3
+ ## 是什么
4
+
5
+ 原样显示、不念的一块字:代码、要保留缩进与符号的东西。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:教编程时的代码;要孩子一字不差看的东西(竖式、表格)。
10
+ - 别用:普通的话 → `text`;要念出来的 → `read`。
11
+
12
+ ## 写法
13
+
14
+ - 围栏标签写语言名(```python),就是代码卡。
15
+ - 不认识的标签,一律当代码卡原样显示,不报错。
16
+
17
+ ## 例子
18
+
19
+ <!-- expect {"kind":"code","props":{"lang":"python","text":"print(1 + 1)"}} -->
20
+ ```python
21
+ print(1 + 1)
22
+ ```
23
+
24
+ <!-- expect {"kind":"code","props":{"lang":null}} -->
25
+ ```
26
+ 3 4
27
+ + 1 2
28
+ -----
29
+ 4 6
30
+ ```
31
+
32
+ ## 反例
33
+
34
+ 没有——什么都能进代码卡。
35
+
36
+ ## 孩子看到什么
37
+
38
+ 深色卡,等宽字,原样;不念。讲稿的 `[词]` 能落在代码上(下划线)。
39
+
40
+ ## 你会收回什么
41
+
42
+ 没有。
43
+
44
+ ## 状态的形状
45
+
46
+ 没有。
@@ -0,0 +1,52 @@
1
+ # image — 图片
2
+
3
+ ## 是什么
4
+
5
+ 一张图 + 图注:孩子拍的作业、产物里的图、网上的图。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:讲孩子拍来的作业(上下文包 `photos:` 里的路径),指着图讲。
10
+ - 用:一张现成的插图能说清的概念。
11
+ - 别用:要孩子自己画 → `canvas`。
12
+ - 别用:路径不存在的图(孩子端只会空一块)。
13
+
14
+ ## 写法
15
+
16
+ - 第一行是图:workspace 里的相对路径,或 http(s) 地址。只认图片后缀。
17
+ - 作业照片照 `photos:` 原样写,如 `captures/2026-09-10/1620-1.jpg`。照片在 workspace,不在 vault。
18
+ - 后面几行是图注。
19
+
20
+ ## 例子
21
+
22
+ <!-- expect {"kind":"image","props":{"src":"captures/2026-09-10/1620-1.jpg","caption":"你昨天写的这道题,看第二行。"}} -->
23
+ ```image
24
+ captures/2026-09-10/1620-1.jpg
25
+ 你昨天写的这道题,看第二行。
26
+ ```
27
+
28
+ <!-- expect {"kind":"image","props":{"src":"https://example.com/brain.png"}} -->
29
+ ```image
30
+ https://example.com/brain.png
31
+ ```
32
+
33
+ ## 反例
34
+
35
+ 不是图片文件,解析不成:
36
+
37
+ <!-- expect {"kind":"text","warning":true} -->
38
+ ```image
39
+ captures/2026-09-10/笔记.md
40
+ ```
41
+
42
+ ## 孩子看到什么
43
+
44
+ 白底卡,图铺满、下面一行图注;点开能双指放大看。讲稿的 `[词]` 只能落在图注上。
45
+
46
+ ## 你会收回什么
47
+
48
+ 没有。
49
+
50
+ ## 状态的形状
51
+
52
+ 没有。
@@ -0,0 +1,69 @@
1
+ # lecture — 放课里的一段
2
+
3
+ ## 是什么
4
+
5
+ 孩子看过的小课堂里的一段,铺满放,带课里原来的声音。上下文包有 `lecture:` 才有课可放。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:孩子问的道理课里讲过。放那一段,别自己再讲一遍。
10
+ - 用:孩子画了一处(`marks:`),放画的那一刻所在的一段。
11
+ - 别用:上下文包里没有 `lecture:`。
12
+ - 别用:课里没讲到他问的。这时照常讲解。
13
+ - 别用:一节放两段。只放最要紧的那一段。
14
+
15
+ ## 写法
16
+
17
+ - 第一行是课的 id 和一段时间,中间空一格。
18
+ - id 照 `lecture.source` 抄,去掉前面的 `bundle ` 或 `video `。
19
+ - 时间照 `lecture.lines` 抄:那一句的起点到下一句的起点,写成 `0:19-0:30`。
20
+ - 只写起点,就放起点那一句。
21
+ - 第二行可以写一句给孩子的话,写在卡上。
22
+ - 讲稿里写 `[[play]]` 锚到它:念完这句,铺满放那一段,接着念下一句。
23
+ - 放完画面停在那一段的末帧,不关。这句之后的话,对着末帧说。
24
+
25
+ ## 例子
26
+
27
+ <!-- expect {"kind":"lecture","props":{"bundle":"2026-09-18-po13-jian-8","from":19000,"to":30000,"text":"再看一遍拆开那一捆。"}} -->
28
+ ```lecture
29
+ 2026-09-18-po13-jian-8 0:19-0:30
30
+ 再看一遍拆开那一捆。
31
+ ```
32
+
33
+ 卡后面的讲稿这样写:
34
+
35
+ > 你画的就是这一捆。我们回到那里再看一遍。[[play]]
36
+ > 拿走 8 根,这一捆还剩几根?
37
+
38
+ <!-- expect {"kind":"lecture","props":{"bundle":"2026-09-18-po13-jian-8","from":30000}} -->
39
+ ```lecture
40
+ 2026-09-18-po13-jian-8 0:30
41
+ ```
42
+
43
+ ## 反例
44
+
45
+ 没写课包 id,只写了课名:
46
+
47
+ <!-- expect {"kind":"text","warning":true} -->
48
+ ```lecture
49
+ 13减8 0:19-0:30
50
+ ```
51
+
52
+ 止写在起前面:
53
+
54
+ <!-- expect {"kind":"text","warning":true} -->
55
+ ```lecture
56
+ 2026-09-18-po13-jian-8 0:30-0:19
57
+ ```
58
+
59
+ ## 孩子看到什么
60
+
61
+ 卡上是课名、那一段末尾的画面、「0:19–0:30 ▷」。点开是舞台:从那一段的开头放,带课里的声音,下面一条进度条。讲稿念到 `[[play]]` 那句,念完自己铺满放。
62
+
63
+ ## 你会收回什么
64
+
65
+ `<job>/<n> lecture「…」 看完了这一段(0:19–0:30)` / `还没看完这一段(0:19–0:30)`。
66
+
67
+ ## 状态的形状
68
+
69
+ `{"done": true}` —— 那一段放完过没有。
@@ -0,0 +1,77 @@
1
+ # paint — 画图
2
+
3
+ ## 是什么
4
+
5
+ 孩子说清楚的一个故事,分好幅交给画家,应用画成一张连环画(四幅时 2×2,像练习册)。出题时带上题干和词语宝库,就是一道看图说话题。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:「你说我画」里,孩子把整段连着说过一遍、和你分好幅以后。
10
+ - 用:「我来出题」里,词都落到了幅上、题干也定了。
11
+ - 别用:故事还没说清楚。先接着问,画是奖励。
12
+ - 别用:现成的图 → `image`;要孩子自己画 → `canvas`。
13
+
14
+ ## 写法
15
+
16
+ - `题:` 题干,出题才写。
17
+ - `词:` 词语宝库,用顿号隔开,出题才写。画不出来的词(突然、终于)也放这里。
18
+ - `角色:` 一行一个,写成「名字:样子、颜色、衣服」。每幅都照这个样子画。孩子说的颜色就用孩子的。
19
+ - 孩子没说样子,只写名字:`角色: 小熊`。
20
+ - `1.` 起一幅一行,一到四幅。每幅只写看得见的:时间和天气、地方、谁、动作、表情、东西。
21
+ - 每幅都写出角色的名字,不用「他」。
22
+ - 不写心里想的、说的话,也不写「羞愧」这种看不见的词:写成「低着头,脸红红的」。
23
+ - 一幅最多三个角色,一幅只画一件事。
24
+
25
+ ## 例子
26
+
27
+ <!-- expect {"kind":"paint","props":{"panels":["春天的早上,地里。小熊弯着腰把西瓜种子埋进土里;小猴坐在树下吃桃子。","中午,大太阳。小熊提着水壶给小苗浇水;小猴躺在树荫下睡大觉。","夏天,小熊的地里结满大西瓜,小熊抱着一个笑着;小猴的地里只长了草。","小熊推着满满一车西瓜,递给小猴一个;小猴低着头,脸红红的,挠着后脑勺。"],"cast":[{"name":"小熊","look":"棕色,戴黄色草帽,穿绿色背带裤"},{"name":"小猴","look":"黄褐色,穿红背心"}]}} -->
28
+ ```paint
29
+ 角色: 小熊:棕色,戴黄色草帽,穿绿色背带裤
30
+ 角色: 小猴:黄褐色,穿红背心
31
+ 1. 春天的早上,地里。小熊弯着腰把西瓜种子埋进土里;小猴坐在树下吃桃子。
32
+ 2. 中午,大太阳。小熊提着水壶给小苗浇水;小猴躺在树荫下睡大觉。
33
+ 3. 夏天,小熊的地里结满大西瓜,小熊抱着一个笑着;小猴的地里只长了草。
34
+ 4. 小熊推着满满一车西瓜,递给小猴一个;小猴低着头,脸红红的,挠着后脑勺。
35
+ ```
36
+
37
+ 出题版,带题干和词语宝库:
38
+
39
+ <!-- expect {"kind":"paint","props":{"ask":"图上画了谁?他们在干什么?结果怎么样?用上下面的词,写几句话。","words":["播种","睡大觉","满满","羞愧"],"panels":["春天的早上,小熊在地里播种;小猴坐在树下吃桃子。","小猴低着头,脸红红的。"]}} -->
40
+ ```paint
41
+ 题: 图上画了谁?他们在干什么?结果怎么样?用上下面的词,写几句话。
42
+ 词: 播种、睡大觉、满满、羞愧
43
+ 1. 春天的早上,小熊在地里播种;小猴坐在树下吃桃子。
44
+ 2. 小猴低着头,脸红红的。
45
+ ```
46
+
47
+ ## 反例
48
+
49
+ 没有分幅,解析不成,会退成一段文字:
50
+
51
+ <!-- expect {"kind":"text","warning":true} -->
52
+ ```paint
53
+ 小熊和小猴种西瓜,小猴很懒,最后很羞愧。
54
+ ```
55
+
56
+ 五幅太多,解析不成:
57
+
58
+ <!-- expect {"kind":"text","warning":true} -->
59
+ ```paint
60
+ 1. 早上
61
+ 2. 中午
62
+ 3. 下午
63
+ 4. 晚上
64
+ 5. 第二天
65
+ ```
66
+
67
+ ## 孩子看到什么
68
+
69
+ 题干一行;画好前是分好的几幅(孩子说的话)和「画家在画」;画好了图淡入,每格左上角一个圆圈数字;下面是词语宝库。点开铺满,能双指放大。`角色:` 不显示。没画成就一直是分好的几幅,孩子端不说没画成。
70
+
71
+ ## 你会收回什么
72
+
73
+ 孩子下一条消息的 `cards:` 里有一行:画好了,或没画成。你看不到图:想知道画得怎样,问孩子「哪里和你想的一样?哪里不一样?」。
74
+
75
+ ## 状态的形状
76
+
77
+ 没有。
@@ -0,0 +1,61 @@
1
+ # photo — 拍给我看
2
+
3
+ ## 是什么
4
+
5
+ 请孩子拍一张照片发给你:看图说话的那幅图、写好的那一页、做完的那道题。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:要看孩子手边的东西(书上的图、作业),请他拍下来发给你。
10
+ - 用:孩子写完了、画完了,请他拍给你看。
11
+ - 别用:只要孩子说一句话 → 末句问他就行,不用卡。
12
+ - 别用:给孩子看一张图 → `image`。
13
+
14
+ ## 写法
15
+
16
+ - 正文一行:要拍什么,最多 30 个字。
17
+ - 放在一节的最后。一节只放一张。
18
+ - 讲稿末句请孩子拍下来发给你。应用不再补提问卡。
19
+
20
+ ## 例子
21
+
22
+ <!-- expect {"kind":"photo","props":{"text":"看图说话的那幅图"}} -->
23
+ ```photo
24
+ 看图说话的那幅图
25
+ ```
26
+
27
+ <!-- expect {"kind":"photo","props":{"text":"写好的那一页"}} -->
28
+ ```photo
29
+ 写好的那一页
30
+ ```
31
+
32
+ ## 反例
33
+
34
+ 写了两行,解析不成,退成一段文字(孩子端没有拍照键):
35
+
36
+ <!-- expect {"kind":"text","warning":true} -->
37
+ ```photo
38
+ 看图说话的那幅图
39
+ 拍正一点,字要清楚
40
+ ```
41
+
42
+ 要拍什么写成一大段,同样退成文字:
43
+
44
+ <!-- expect {"kind":"text","warning":true} -->
45
+ ```photo
46
+ 请你把练习册第二十三页上面那幅小白兔和小灰兔种萝卜的四幅连环画整页拍下来发给我看看
47
+ ```
48
+
49
+ ## 孩子看到什么
50
+
51
+ 紫色卡:左边一个相机,右边大字写要拍什么。它在最后一节时,卡下沿写「等你拍…」,旁边「拍照」「相册」两颗按钮;点了进发照片屏(能裁、能圈、能配一句话),发给你。拍来的照片缩在卡下沿,配的话跟在旁边,点照片看大图。
52
+
53
+ ## 你会收回什么
54
+
55
+ 卡上没有状态。孩子拍来的照片随下一条消息到你手里,和他自己拍的作业照片一样:上下文包里有 `photos:` 与 `photoFiles:`,照板书写法的「作业照片」读。他配的话就是这条消息的字;没配就是「(拍了 N 张)」。
56
+
57
+ 孩子没拍、直接说话(「我找不到那幅图」),那句话也写在这张卡下沿。
58
+
59
+ ## 状态的形状
60
+
61
+ 没有。照片在消息里,不在卡上。
@@ -0,0 +1,51 @@
1
+ # read — 点读
2
+
3
+ ## 是什么
4
+
5
+ 一行一段、点哪段听哪段的卡:原文、古诗、课文、生词、单词表。每段会在后台配成一段音(你配了音色的话),孩子点了就念。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:要孩子反复听、跟着读的东西——古诗、课文原句、单词(英文后面可以跟中文)。
10
+ - 用:超过两行的原文。`text` 卡是给你讲的,这张是给孩子读的。
11
+ - 别用:你自己的解释、结论 → `text`。
12
+ - 别用:一段里塞两句;一段就是孩子一次点的量。
13
+
14
+ ## 写法
15
+
16
+ 一行一段。英文后面可以跟中文(`apple 苹果`),念的时候整段一起念。
17
+
18
+ ## 例子
19
+
20
+ <!-- expect {"kind":"read","props":{"segments":["床前明月光,疑是地上霜。","举头望明月,低头思故乡。"]}} -->
21
+ ```read
22
+ 床前明月光,疑是地上霜。
23
+ 举头望明月,低头思故乡。
24
+ ```
25
+
26
+ <!-- expect {"kind":"read","props":{"segments":["apple 苹果","banana 香蕉","orange 橘子"]}} -->
27
+ ```read
28
+ apple 苹果
29
+ banana 香蕉
30
+ orange 橘子
31
+ ```
32
+
33
+ ## 反例
34
+
35
+ 空的点读卡解析不成,会退成一段文字:
36
+
37
+ <!-- expect {"kind":"text","warning":true} -->
38
+ ```read
39
+ ```
40
+
41
+ ## 孩子看到什么
42
+
43
+ 米色卡,每段一条白底的行;点一条就念那条(你配了音色就是你的声,配音还没生成好时先用浏览器的声),念的时候那条亮起来。讲稿的 `[词]` 落在段上是荧光笔。
44
+
45
+ ## 你会收回什么
46
+
47
+ 没有——点读不记状态(点了哪段不告诉你)。
48
+
49
+ ## 状态的形状
50
+
51
+ 没有。
@@ -0,0 +1,69 @@
1
+ # text — 一段字
2
+
3
+ ## 是什么
4
+
5
+ 板上的一段字:定义、结论、公式、一句要记住的话、题面。一张卡一个意思,能独立被指着讲三句。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:给一个概念下定义、放一个公式、写一句要记住的话、写题面(没有选项、不用孩子填)。
10
+ - 用:小节标题——只写一行 `# 标题`,板上出一行无底的字,不算卡。
11
+ - 别用:原文、古诗、单词表(超过两行的要念的东西)→ 用 `read`,孩子能点哪段听哪段。
12
+ - 别用:要孩子选、画的 → `choice` / `canvas`;`text` 卡上什么都做不了。要他说的在讲稿里问。
13
+ - 别用:把讲稿写进卡。「第一步:13 的平方是多少」这种是你说的话,写在围栏外面,一行一句。
14
+
15
+ ## 写法
16
+
17
+ - 围栏标签只写 `text`。
18
+ - 正文第一行以 `# ` 开头,就是这张卡的标题,下面是正文。
19
+ - 只有一行 `# 标题`、没有正文,就是小节标题。
20
+ - 算式写 `text formula`:衬线居中,单独一行。
21
+ - 样子(底色、字号、并不并排)不用管,应用按卡的种类定。
22
+
23
+ ## 例子
24
+
25
+ <!-- expect {"kind":"text","props":{"title":"认边","text":"两条短边叫直角边,最长的一条叫斜边"}} -->
26
+ ```text
27
+ # 认边
28
+ 两条短边叫直角边,最长的一条叫斜边
29
+ ```
30
+
31
+ <!-- expect {"kind":"text","props":{"style":"formula","text":"三角形面积 = 底 × 高 ÷ 2"}} -->
32
+ ```text formula
33
+ 三角形面积 = 底 × 高 ÷ 2
34
+ ```
35
+
36
+ <!-- expect {"kind":"text","props":{"title":"两大类型","heading":true}} -->
37
+ ```text
38
+ # 两大类型
39
+ ```
40
+
41
+ ## 反例
42
+
43
+ 方括号是讲稿的标注语法,不写在卡里;写了会被剥掉,家长视图多一行提醒:
44
+
45
+ <!-- expect {"kind":"text","props":{"text":"两条短边叫直角边"},"warning":true} -->
46
+ ```text
47
+ 两条短边叫[直角边]
48
+ ```
49
+
50
+ 要孩子填的,别写成文字卡再跟一行行「= 答案」。正文里有空(`___`、`( )`)时,`= ` 开头的行算答案,孩子看不到,家长视图多一行提醒。能选的出 `choice`;答案是一个词的,请他开口说:
51
+
52
+ <!-- expect {"kind":"text","props":{"text":"( )穷( )尽,填两个字。\n= 山\n= 水"},"warning":true} -->
53
+ ```text
54
+ ( )穷( )尽,填两个字。
55
+ = 山
56
+ = 水
57
+ ```
58
+
59
+ ## 孩子看到什么
60
+
61
+ 一张带底色的卡:标题一行小字、正文一段;封面是深底大字;公式衬线居中。讲稿念到 `[词]` 时,词在卡上被标注(标题位画圈、正文里的词术语底、公式荧光)。点开只是看清,没有交互。
62
+
63
+ ## 你会收回什么
64
+
65
+ 没有——这种卡没有状态。
66
+
67
+ ## 状态的形状
68
+
69
+ 没有。
@@ -0,0 +1,78 @@
1
+ # tianzige — 田字格
2
+
3
+ ## 是什么
4
+
5
+ 田字格:孩子问「这个字怎么写」时用的卡,一到四个汉字,每个字一个格,讲到这张卡时逐笔写一遍,之后孩子点哪个字,哪个字再写一遍。笔顺是现成的数据,不是你写的。
6
+
7
+ ## 什么时候用 / 别用
8
+
9
+ - 用:孩子问「X 怎么写」「X 的笔顺」;讲生字、讲词语时要孩子看清怎么落笔。
10
+ - 用:一个词就写一张,`鼓励` 两个字放一张,孩子看得到它们是一个词。
11
+ - 别用:给孩子读的整句、古诗 → `read`。
12
+ - 别用:解释字义、讲来历 → `text`;田字格里只有字,没有别的。
13
+ - 别用:部首、笔画数写进卡里 → 说在讲稿里;笔画数卡上会自己显示,你不用数,也别在讲稿里数。
14
+
15
+ ## 写法
16
+
17
+ - 第一行是要写的字:一到四个汉字,不要空格、标点。
18
+ - 第二行写拼音:一字一个音节,空格隔开,带声调(`gǔ lì` 或 `gu3 li4`)。
19
+ - 多音字写这句话里的读法,如「长大」写 `zhǎng dà`。
20
+ - 拼音和字数对不上,卡上就只有字,不显示拼音。
21
+ - 同音的词先给:先出这张卡,讲稿里说一句是哪个意思,如「鼓励,就是给人加油打气」。
22
+ - 不先问,也不在末尾问「你说的是……吧」。写错了,孩子会说。
23
+
24
+ ## 例子
25
+
26
+ <!-- expect {"kind":"tianzige","props":{"chars":"鼓励","pinyin":["gǔ","lì"]}} -->
27
+ ```tianzige
28
+ 鼓励
29
+ gǔ lì
30
+ ```
31
+
32
+ <!-- expect {"kind":"tianzige","props":{"chars":"长大","pinyin":["zhǎng","dà"]}} -->
33
+ ```tianzige
34
+ 长大
35
+ zhang3 da4
36
+ ```
37
+
38
+ <!-- expect {"kind":"tianzige","props":{"chars":"鼓","pinyin":["gǔ"]}} -->
39
+ ```tianzige
40
+ 鼓
41
+ gǔ
42
+ ```
43
+
44
+ ## 反例
45
+
46
+ 拼音和字写在同一行,或夹了标点,解析不成,会退成一段文字:
47
+
48
+ <!-- expect {"kind":"text","warning":true} -->
49
+ ```tianzige
50
+ 鼓励 gǔ lì
51
+ ```
52
+
53
+ 拼音和字数对不上,卡照常,只是不显示拼音:
54
+
55
+ <!-- expect {"kind":"tianzige","props":{"chars":"鼓励"},"warning":true} -->
56
+ ```tianzige
57
+ 鼓励
58
+ gǔlì
59
+ ```
60
+
61
+ 超过四个字也解析不成,拆成两张:
62
+
63
+ <!-- expect {"kind":"text","warning":true} -->
64
+ ```tianzige
65
+ 画蛇添足画蛇
66
+ ```
67
+
68
+ ## 孩子看到什么
69
+
70
+ 白底卡,每个字一个田字格,写了拼音的标在格子上方(像课本);格里先是淡淡的字形;讲到这张卡时一笔一笔写出来,鼓写完再写励,右下角标着几画。之后孩子点哪个格,哪个字再写一遍。没有舞台、没有按钮。数据里没有的字(生僻字)只显示字形、不动。讲稿的 `[词]` 落不到这张卡上,要标注写在别的卡里。
71
+
72
+ ## 你会收回什么
73
+
74
+ 没有——田字格不记状态(点了几遍不告诉你)。
75
+
76
+ ## 状态的形状
77
+
78
+ 没有。