@aethrekh/pi-cs 0.1.8 → 0.1.9-alpha.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.
package/CHANGELOG.md CHANGED
@@ -7,9 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ---
9
9
 
10
+ ## [0.1.8](https://github.com/AshishBagdane/pi-cs/compare/v0.1.7...v0.1.8) (2026-06-04)
11
+
12
+ ### Fixed
13
+
14
+ - **integrity-guard: infinite recursion on skill invocation** — `pi.sendUserMessage()` re-triggered the `input` event; warning text containing words like "graded" would match medium-risk patterns and call `sendUserMessage` again, causing `RangeError: Maximum call stack size exceeded`. Added a re-entrancy guard to skip the handler when a warning is already being dispatched.
15
+ - **integrity-guard: false positives on `/skill:` prefix** — The skill name embedded in `/skill:homework ...` was matching medium-risk patterns (e.g. `\bhomework\b`), flagging every homework skill invocation. The `/skill:name` prefix is now stripped before risk analysis so only the user's actual request text is checked.
16
+
17
+ ---
18
+
19
+ ## [0.1.7](https://github.com/AshishBagdane/pi-cs/compare/v0.1.6...v0.1.7) (2026-06-04)
20
+
21
+ ### Fixed
22
+
23
+ - **Pisces persona active from first session** — Previously, `APPEND_SYSTEM.md` was written during `session_start`, but Pi reads it at startup before that event fires, requiring two starts. A `postinstall` npm script now writes the file immediately on `pi install`, so the persona is active from the very first session.
24
+
25
+ ---
26
+
27
+ ## [0.1.6](https://github.com/AshishBagdane/pi-cs/compare/v0.1.5...v0.1.6) (2026-06-04)
28
+
29
+ ### Fixed
30
+
31
+ - **SYSTEM.md not found in published package** — `loadPersona()` resolved `../../SYSTEM.md` relative to `__dirname`, which is `src/extensions/` during development but `extensions/` in the compiled package. Added `../SYSTEM.md` as the first candidate so the path resolves correctly to the package root after installation.
32
+ - **Extensions loading `.d.ts` files** — Pi scanned the `extensions/` directory and attempted to load TypeScript declaration files as extension factories. Declaration files are now excluded from the pack; only `.js` files are copied. The generated `package.json` also includes an explicit `pi.extensions` list with `.js` paths to prevent directory scanning.
33
+
34
+ ---
35
+
10
36
  ## [0.1.5](https://github.com/AshishBagdane/pi-cs/compare/v0.1.4...v0.1.5) (2026-06-04)
11
37
 
12
- ### ### Fixed
38
+ ### Fixed
13
39
 
14
40
  * exclude .d.ts files from extensions pack and add pi key to published package.json ([23f1548](https://github.com/AshishBagdane/pi-cs/commit/23f15481650770322ee6f6167aff0eac92ed419b))
15
41
 
@@ -23,24 +49,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
23
49
 
24
50
  ## [0.1.4](https://github.com/AshishBagdane/pi-cs/compare/v0.1.3...v0.1.4) (2026-06-04)
25
51
 
26
- ### ### Fixed
52
+ ### Fixed
27
53
 
28
54
  * copy SYSTEM.md (uppercase) in pack script ([d76fe7d](https://github.com/AshishBagdane/pi-cs/commit/d76fe7da07d919fb9020c79777a2bc6ea63f88d4))
29
55
  * correct system prompt path casing and enforce it in validate ([98da376](https://github.com/AshishBagdane/pi-cs/commit/98da3769b5bf7ea734746efd433d038ffed132a9))
30
56
  * inject Pisces persona via before_agent_start hook ([4c04728](https://github.com/AshishBagdane/pi-cs/commit/4c047282bb0203c8abaaf10688b58089f85c7c81))
31
57
 
32
- ### ### Changed
58
+ ### Changed
33
59
 
34
60
  * install Pisces persona via APPEND_SYSTEM.md instead of per-turn injection ([4ed08c4](https://github.com/AshishBagdane/pi-cs/commit/4ed08c434acf77eeafca03aa5c303c6edc1b3557))
35
61
  * split monolithic index.ts into four real Pi extension factories ([e0dd78a](https://github.com/AshishBagdane/pi-cs/commit/e0dd78a4117f96e5e525396310616c3b111445c7))
36
62
 
37
63
  ## [0.1.3](https://github.com/AshishBagdane/pi-cs/compare/v0.1.2...v0.1.3) (2026-06-02)
38
64
 
39
- ### ### Fixed
65
+ ### Fixed
40
66
 
41
67
  * wire session_shutdown to persist session records via progress tracker ([0925eec](https://github.com/AshishBagdane/pi-cs/commit/0925eec5c9d2992e53954b3e67b70107e8c16ce5))
42
68
 
43
- ### ### Changed
69
+ ### Changed
44
70
 
45
71
  * improve CLAUDE.md with runtime extension architecture and dev recipes ([ef5fea6](https://github.com/AshishBagdane/pi-cs/commit/ef5fea6ad389420341a773b748b9a5b1286abca5))
46
72
 
@@ -62,7 +88,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
62
88
 
63
89
  ## 0.1.1 (2026-06-02)
64
90
 
65
- ### ### Added
91
+ ### Added
66
92
 
67
93
  * add background extensions ([2b8c432](https://github.com/AshishBagdane/pi-cs/commit/2b8c432c729b14a630d98aa951612917712695d9))
68
94
  * add configuration system (schema + defaults) ([3a78bb4](https://github.com/AshishBagdane/pi-cs/commit/3a78bb4299d730ecc06e45675cc75dcb29a11121))
@@ -72,11 +98,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
72
98
  * add skill prompt definitions ([e0fb541](https://github.com/AshishBagdane/pi-cs/commit/e0fb54138362fab53de93909c4008fef500af62a))
73
99
  * add validate and pack scripts ([8e4841b](https://github.com/AshishBagdane/pi-cs/commit/8e4841bfc5bcb32acdc55086879c1b671d10e47d))
74
100
 
75
- ### ### Fixed
101
+ ### Fixed
76
102
 
77
103
  * repair pnpm-workspace.yaml to unblock CI ([78915c5](https://github.com/AshishBagdane/pi-cs/commit/78915c50e3de5bc1335e4405cd10ac18dd9c5cf4))
78
104
 
79
- ### ### Changed
105
+ ### Changed
80
106
 
81
107
  * add comprehensive student usage guide ([0d2f769](https://github.com/AshishBagdane/pi-cs/commit/0d2f769a80d672062644fc01df275d95e8f3e456))
82
108
  * add CONTRIBUTING.md with project-specific contribution guide ([013d69a](https://github.com/AshishBagdane/pi-cs/commit/013d69a5d08e1bb0b47270922fb381111c31a201))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aethrekh/pi-cs",
3
- "version": "0.1.8",
3
+ "version": "0.1.9-alpha.0",
4
4
  "description": "Pisces — The CS Student Edition for Pi Coding Agent. Your personal AI teaching assistant from homework to thesis.",
5
5
  "keywords": [
6
6
  "academic",
package/pi-cs.meta.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-cs",
3
- "version": "0.1.8",
4
- "built_at": "2026-06-04T13:19:10.752Z",
3
+ "version": "0.1.9-alpha.0",
4
+ "built_at": "2026-06-04T13:58:18.170Z",
5
5
  "entry": "index.js",
6
6
  "node_minimum": "18.0.0"
7
7
  }
package/pi-package.yaml CHANGED
@@ -1,5 +1,5 @@
1
1
  name: pi-cs
2
- version: 0.1.8
2
+ version: 0.1.9-alpha.0
3
3
  display_name: "pi-cs (Pisces)"
4
4
  description: "The CS Student Edition for Pi — Your personal AI teaching assistant for Computer Science, from homework to thesis."
5
5
  icon: public/pisces-logo-512.png
@@ -33,8 +33,14 @@ Ask for all of the following in a single message (do not ask one at a time):
33
33
 
34
34
  If the student provides some details inline when invoking `/semester --init`, pre-fill what is already known and only ask for what is missing.
35
35
 
36
- ### Step 2 — Generate SEMESTER.md
37
- Produce the complete file as a fenced `markdown` code block with real values — no placeholder text. Use this exact structure:
36
+ ### Step 2 — Check for Existing File
37
+ Before writing anything, check whether `SEMESTER.md` already exists in the current directory.
38
+
39
+ - If it **exists**: tell the student it was found, show the current content, and ask whether to overwrite it or cancel. Do not proceed unless they confirm.
40
+ - If it **does not exist**: proceed to Step 3.
41
+
42
+ ### Step 3 — Write SEMESTER.md
43
+ Build the file content with real values — no placeholder text. Use this exact structure:
38
44
 
39
45
  ```
40
46
  semester: <semester> <year>
@@ -61,13 +67,13 @@ Feeling weak on: <weak topics, else leave blank>
61
67
  Primary language: <language>
62
68
  ```
63
69
 
64
- Do not include any comment block that belongs only in the raw template file.
70
+ Write this content directly to `SEMESTER.md` in the current working directory using the file write tool. Do not ask the student to copy-paste it — write the file yourself.
71
+
72
+ After writing, confirm with: *"✅ `SEMESTER.md` written to `<absolute path>`."*
65
73
 
66
- ### Step 3 — Save Instructions
67
74
  Tell the student:
68
- - **Recommended location:** `~/university/SEMESTER.md` — Pisces finds it from any course subdirectory
69
- - Saving to the current directory also works
70
- - Reloads automatically on every `cd` — no restart needed
75
+ - Pisces also searches `~/university/SEMESTER.md` — move the file there if you want it to work from any subdirectory
76
+ - It reloads automatically on every `cd` — no restart needed
71
77
  - Update `week:` each week and `active_project:` whenever it changes
72
78
 
73
79
  ### Step 4 — Live Preview
@@ -88,8 +94,10 @@ Common update patterns:
88
94
  - **Course change** — add or remove a course from the list
89
95
  - **Weak topics** — replace the "Feeling weak on" line
90
96
 
91
- ### Step 2 — Output the Updated File
92
- Show a brief summary of what changed, then output the complete updated `SEMESTER.md` as a fenced code block so the student can copy-paste it wholesale. Never output a partial file that would leave the student manually merging.
97
+ ### Step 2 — Write the Updated File
98
+ Read the current `SEMESTER.md`, apply the changes, and write the complete updated file back using the file write tool. Never output a partial file.
99
+
100
+ Show a brief summary of what changed, then confirm with: *"✅ `SEMESTER.md` updated."*
93
101
 
94
102
  ---
95
103