stackprep-pro 0.2.12__tar.gz → 0.2.13__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stackprep-pro
3
- Version: 0.2.12
3
+ Version: 0.2.13
4
4
  Summary: stackprep-pro — interview & certification prep MCP server for any AI client
5
5
  Project-URL: Homepage, https://github.com/youngpada1/stackprep-pro
6
6
  Project-URL: Repository, https://github.com/youngpada1/stackprep-pro
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "stackprep-pro"
3
- version = "0.2.12"
3
+ version = "0.2.13"
4
4
  description = "stackprep-pro — interview & certification prep MCP server for any AI client"
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -307,31 +307,27 @@ def end_session(session_id: str) -> str:
307
307
  all_flagged = list(dict.fromkeys(session["auto_flagged"] + session["flagged"]))
308
308
  session["ended"] = True
309
309
  session["all_flagged"] = all_flagged
310
- # Do NOT auto-save the session here. It is only saved if the user explicitly
311
- # chooses to, via save_session (with a name they provide).
310
+ _persist_session(session_id)
312
311
 
313
312
  score = session["score"]
314
313
  topics_list = "\n".join(f" • {t}" for t in all_flagged) if all_flagged else " (none — full score!)"
315
314
 
316
315
  return "\n".join([
317
- "=== SESSION FINISHED ===",
316
+ "=== SESSION ENDED ===",
318
317
  f"Score: {score['correct']}/{score['total']} "
319
318
  f"({score['incorrect']} incorrect, {score['partial']} partial)",
320
319
  "",
321
320
  "Auto-detected study topics:",
322
321
  topics_list,
323
322
  "",
324
- "IMPORTANT: end_session is ONLY for finishing a session. It marks the session COMPLETED, so it can NO",
325
- "longer be resumed. If the user wanted to PAUSE and continue later, do NOT call end_session call",
326
- "save_session instead (it keeps the session resumable).",
323
+ "This is the STUDY PACK path (the user pressed S / is DONE with the questions and wants a study pack to",
324
+ "prepare for their weak points later). This is DIFFERENT from saving a session to resumethat is",
325
+ "save_session (the X path), and is NOT done here.",
327
326
  "",
328
- "Now (this flow is identical for interview and certification mode):",
329
- ' 1. Ask the user: "Do you want a study pack from this finished session? (y/n)"',
330
- " 2. If NO: stop here. Nothing else is saved.",
331
- " 3. If YES:",
332
- ' a. Ask: "What would you like to name this study pack? (e.g. snowpro-core-week1)"',
333
- " b. Generate the Study Plan and study pack (see skill rules), then call",
334
- " save_study_pack(session_id='{}', name=<pack name the user chose>, content=<generated pack>).".format(session_id),
327
+ "Now (identical for interview and certification mode):",
328
+ ' 1. Generate a Study Plan (see skill rules), then ask: "Want to add any extra topics before I save the study pack?"',
329
+ ' 2. Ask: "What would you like to name this study pack? (e.g. snowpro-core-week1)"',
330
+ " 3. Call save_study_pack(session_id='{}', name=<pack name the user chose>, content=<generated pack>).".format(session_id),
335
331
  ])
336
332
 
337
333
 
@@ -72,7 +72,16 @@ DOCS: <Title>: <url>
72
72
  Always include 1 real, publicly accessible URL relevant to the topic (official docs, RFC, vendor channel).
73
73
 
74
74
  After scoring, ask:
75
- **"Next question? [Y] — or type S to save a Study Pack, X to exit"**
75
+ **"Next question? [Y] — S to save a Study Pack, X to save & exit"**
76
+
77
+ Handling the reply:
78
+ - **Y** → next question.
79
+ - **S** → the user is DONE and wants a study pack. Call `end_session` and follow its returned flow
80
+ (generate study plan, name the study pack, save_study_pack). This marks the session finished.
81
+ - **X** → the user wants to PAUSE and resume later. Ask "Do you want to save this session to continue
82
+ later? (y/n)". If yes, ask "What would you like to name this session?" — the user MUST name it (never
83
+ auto-generate) — then call `save_session` with that name. The session stays RESUMABLE and appears later
84
+ in the continue list under that name. If no, just exit without saving.
76
85
 
77
86
  ## Adaptive difficulty
78
87
 
@@ -73,7 +73,16 @@ DOCS: <Title>: <url>
73
73
  Always include 1 real, publicly accessible URL relevant to the topic (official docs, RFC, vendor channel).
74
74
 
75
75
  After scoring, ask:
76
- **"Next question? [Y] — or type S to save a Study Pack, X to exit"**
76
+ **"Next question? [Y] — S to save a Study Pack, X to save & exit"**
77
+
78
+ Handling the reply:
79
+ - **Y** → next question.
80
+ - **S** → the user is DONE and wants a study pack. Call `end_session` and follow its returned flow
81
+ (generate study plan, name the study pack, save_study_pack). This marks the session finished.
82
+ - **X** → the user wants to PAUSE and resume later. Ask "Do you want to save this session to continue
83
+ later? (y/n)". If yes, ask "What would you like to name this session?" — the user MUST name it (never
84
+ auto-generate) — then call `save_session` with that name. The session stays RESUMABLE and appears later
85
+ in the continue list under that name. If no, just exit without saving.
77
86
 
78
87
  ## Adaptive difficulty
79
88
 
@@ -723,7 +723,7 @@ wheels = [
723
723
 
724
724
  [[package]]
725
725
  name = "stackprep-pro"
726
- version = "0.2.12"
726
+ version = "0.2.13"
727
727
  source = { editable = "." }
728
728
  dependencies = [
729
729
  { name = "mcp", extra = ["cli"] },
File without changes
File without changes
File without changes