@bis-code/study-dash 0.5.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +20 -1
  3. package/hooks/hooks.json +1 -1
  4. package/package.json +2 -2
  5. package/rules/tutor-mode.md +12 -0
  6. package/server/dist/bundle.mjs +201 -47
  7. package/server/dist/dashboard/api.js +1 -1
  8. package/server/dist/dashboard/api.js.map +1 -1
  9. package/server/dist/languages.d.ts +23 -0
  10. package/server/dist/languages.js +89 -0
  11. package/server/dist/languages.js.map +1 -0
  12. package/server/dist/services/exercises.d.ts +5 -0
  13. package/server/dist/services/exercises.js +38 -41
  14. package/server/dist/services/exercises.js.map +1 -1
  15. package/server/dist/tools/curriculum.js +8 -0
  16. package/server/dist/tools/curriculum.js.map +1 -1
  17. package/server/dist/tools/exercises.js +62 -0
  18. package/server/dist/tools/exercises.js.map +1 -1
  19. package/server/package.json +1 -1
  20. package/server/start.sh +12 -0
  21. package/skills/learn/SKILL.md +20 -0
  22. package/server/node_modules/better-sqlite3/LICENSE +0 -21
  23. package/server/node_modules/better-sqlite3/README.md +0 -99
  24. package/server/node_modules/better-sqlite3/binding.gyp +0 -38
  25. package/server/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  26. package/server/node_modules/better-sqlite3/deps/common.gypi +0 -68
  27. package/server/node_modules/better-sqlite3/deps/copy.js +0 -31
  28. package/server/node_modules/better-sqlite3/deps/defines.gypi +0 -41
  29. package/server/node_modules/better-sqlite3/deps/download.sh +0 -122
  30. package/server/node_modules/better-sqlite3/deps/patches/1208.patch +0 -15
  31. package/server/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +0 -261480
  32. package/server/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +0 -13715
  33. package/server/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +0 -719
  34. package/server/node_modules/better-sqlite3/deps/sqlite3.gyp +0 -80
  35. package/server/node_modules/better-sqlite3/deps/test_extension.c +0 -21
  36. package/server/node_modules/better-sqlite3/lib/database.js +0 -90
  37. package/server/node_modules/better-sqlite3/lib/index.js +0 -3
  38. package/server/node_modules/better-sqlite3/lib/methods/aggregate.js +0 -43
  39. package/server/node_modules/better-sqlite3/lib/methods/backup.js +0 -67
  40. package/server/node_modules/better-sqlite3/lib/methods/function.js +0 -31
  41. package/server/node_modules/better-sqlite3/lib/methods/inspect.js +0 -7
  42. package/server/node_modules/better-sqlite3/lib/methods/pragma.js +0 -12
  43. package/server/node_modules/better-sqlite3/lib/methods/serialize.js +0 -16
  44. package/server/node_modules/better-sqlite3/lib/methods/table.js +0 -189
  45. package/server/node_modules/better-sqlite3/lib/methods/transaction.js +0 -78
  46. package/server/node_modules/better-sqlite3/lib/methods/wrappers.js +0 -54
  47. package/server/node_modules/better-sqlite3/lib/sqlite-error.js +0 -20
  48. package/server/node_modules/better-sqlite3/lib/util.js +0 -12
  49. package/server/node_modules/better-sqlite3/package.json +0 -54
  50. package/server/node_modules/better-sqlite3/src/better_sqlite3.cpp +0 -2186
  51. package/server/node_modules/better-sqlite3/src/better_sqlite3.hpp +0 -1036
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "study-dash",
3
- "version": "0.5.1",
3
+ "version": "0.7.0",
4
4
  "description": "Structured learning on any subject with dashboard, Q&A logging, visualizations, exercises",
5
5
  "author": {
6
6
  "name": "Ioan-Sorin Baicoianu",
package/README.md CHANGED
@@ -69,6 +69,7 @@ Mobile-responsive: bottom nav on phones, sidebar on desktop.
69
69
  | `learn_mark_done` | Mark a topic as completed |
70
70
  | `learn_get_progress` | Get completion stats |
71
71
  | `learn_get_curriculum` | Get the full topic tree |
72
+ | `learn_list_subjects` | List all available subjects |
72
73
 
73
74
  ### Q&A
74
75
  | Tool | Description |
@@ -89,6 +90,9 @@ Mobile-responsive: bottom nav on phones, sidebar on desktop.
89
90
  | `learn_create_exercise` | Create a coding exercise, quiz, project, or assignment |
90
91
  | `learn_run_tests` | Execute tests and return pass/fail results |
91
92
  | `learn_get_exercises` | List exercises for the current topic |
93
+ | `learn_submit_quiz` | Submit quiz answers and get scored results |
94
+ | `learn_get_exercise_files` | Get source code files for a coding exercise |
95
+ | `learn_save_exercise_files` | Save updated source code for a coding exercise |
92
96
 
93
97
  ## Hooks
94
98
 
@@ -110,11 +114,25 @@ Mobile-responsive: bottom nav on phones, sidebar on desktop.
110
114
 
111
115
  | Type | Validation |
112
116
  |------|-----------|
113
- | **Coding** | Real test execution (`go test`, `pytest`, `cargo test`, `vitest`) |
117
+ | **Coding** | Real test execution — language-aware (`go test`, `pytest`, `cargo test`, `vitest`) |
114
118
  | **Quiz** | Multiple choice, true/false, fill-in-the-blank — scored in dashboard |
115
119
  | **Project** | Larger exercises with acceptance criteria and test files |
116
120
  | **Assignment** | Imported from school PDFs with grading criteria |
117
121
 
122
+ ## Supported Languages
123
+
124
+ Coding exercises use the correct file naming, test runner, and scaffold files per language. Adding a new language is a single entry in `server/src/languages.ts`.
125
+
126
+ | Language | Files | Test Runner | Scaffold |
127
+ |----------|-------|-------------|----------|
128
+ | Go | `main.go` + `main_test.go` | `go test` | `go.mod` |
129
+ | Python | `main.py` + `test_main.py` | `pytest` | — |
130
+ | Rust | `main.rs` + `main_test.rs` | `cargo test` | `Cargo.toml` |
131
+ | TypeScript | `main.ts` + `main.test.ts` | `vitest` | `package.json` |
132
+ | JavaScript | `main.ts` + `main.test.ts` | `vitest` | `package.json` |
133
+
134
+ Non-coding subjects (no language set) support quizzes and assignments only.
135
+
118
136
  ## Settings
119
137
 
120
138
  | Setting | Default | Description |
@@ -129,6 +147,7 @@ Single Node.js process with layered internals:
129
147
  ```
130
148
  Transport: MCP Tools (stdio) + HTTP API (dashboard)
131
149
  Services: CurriculumService | QAService | VizService | ExerciseService
150
+ Config: Language Registry (languages.ts)
132
151
  Storage: SQLite (better-sqlite3) + File System (exercises)
133
152
  ```
134
153
 
package/hooks/hooks.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "matcher": "learn_mark_done",
6
6
  "hooks": [{
7
7
  "type": "prompt",
8
- "prompt": "The user just completed a topic. Generate 2-3 exercises for this topic using learn_create_exercise. Include at least one coding exercise and one quiz. Match the difficulty to the topic content."
8
+ "prompt": "The user just completed a topic. Generate 2-3 exercises for this topic using learn_create_exercise. If the subject has a programming language, include at least one coding exercise (with starter_code and test_content following the language's conventions) and one quiz. If the subject has no language, create only quiz or assignment exercises. Match the difficulty to the topic content."
9
9
  }]
10
10
  },
11
11
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bis-code/study-dash",
3
- "version": "0.5.1",
3
+ "version": "0.7.0",
4
4
  "description": "Claude Code plugin for structured learning on any subject — dashboard, Q&A logging, visualizations, exercises",
5
5
  "license": "MIT",
6
6
  "author": "Ioan-Sorin Baicoianu <baicoianuioansorin@gmail.com>",
@@ -23,7 +23,7 @@
23
23
  ".claude-plugin",
24
24
  "server/dist",
25
25
  "server/package.json",
26
- "server/node_modules/better-sqlite3",
26
+ "server/start.sh",
27
27
  "commands",
28
28
  "skills",
29
29
  "hooks",
@@ -33,6 +33,18 @@ All logged content MUST be markdown:
33
33
  - Point out common mistakes and gotchas
34
34
  - Adapt language and depth to the subject domain
35
35
 
36
+ ## Exercise Generation
37
+
38
+ When creating exercises for coding subjects, follow the language's conventions:
39
+ - **Go**: `package main`, tests use `testing.T`, files are `main.go` + `main_test.go`
40
+ - **Python**: plain functions, tests use `pytest` with `assert`, files are `main.py` + `test_main.py`
41
+ - **Rust**: `fn` functions, tests use `#[test]` + `assert_eq!`, files are `main.rs` + `main_test.rs`
42
+ - **TypeScript/JavaScript**: ESM exports, tests use `vitest` describe/it/expect, files are `main.ts` + `main.test.ts`
43
+
44
+ For non-coding subjects (no language set): only create quiz or assignment exercises.
45
+
46
+ Always provide `starter_code` and `test_content` for coding exercises.
47
+
36
48
  ## Dashboard
37
49
 
38
50
  The learning dashboard runs at http://127.0.0.1:19282 — mention it if the user wants to review progress.