@aethrekh/pi-cs 0.1.3 → 0.1.4

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,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ---
9
9
 
10
+ * chore: release v0.1.4 (274b87a)
11
+ * fix: copy SYSTEM.md (uppercase) in pack script (d76fe7d)
12
+ * refactor: split monolithic index.ts into four real Pi extension factories (e0dd78a)
13
+ * refactor: install Pisces persona via APPEND_SYSTEM.md instead of per-turn injection (4ed08c4)
14
+ * fix: inject Pisces persona via before_agent_start hook (4c04728)
15
+ * fix: correct system prompt path casing and enforce it in validate (98da376)
16
+ * chore: add star History section (6418c8c)
17
+
18
+ ## [0.1.4](https://github.com/AshishBagdane/pi-cs/compare/v0.1.3...v0.1.4) (2026-06-04)
19
+
20
+ ### ### Fixed
21
+
22
+ * copy SYSTEM.md (uppercase) in pack script ([d76fe7d](https://github.com/AshishBagdane/pi-cs/commit/d76fe7da07d919fb9020c79777a2bc6ea63f88d4))
23
+ * correct system prompt path casing and enforce it in validate ([98da376](https://github.com/AshishBagdane/pi-cs/commit/98da3769b5bf7ea734746efd433d038ffed132a9))
24
+ * inject Pisces persona via before_agent_start hook ([4c04728](https://github.com/AshishBagdane/pi-cs/commit/4c047282bb0203c8abaaf10688b58089f85c7c81))
25
+
26
+ ### ### Changed
27
+
28
+ * install Pisces persona via APPEND_SYSTEM.md instead of per-turn injection ([4ed08c4](https://github.com/AshishBagdane/pi-cs/commit/4ed08c434acf77eeafca03aa5c303c6edc1b3557))
29
+ * split monolithic index.ts into four real Pi extension factories ([e0dd78a](https://github.com/AshishBagdane/pi-cs/commit/e0dd78a4117f96e5e525396310616c3b111445c7))
30
+
10
31
  ## [0.1.3](https://github.com/AshishBagdane/pi-cs/compare/v0.1.2...v0.1.3) (2026-06-02)
11
32
 
12
33
  ### ### Fixed
package/README.md CHANGED
@@ -265,3 +265,15 @@ MIT — see [LICENSE](LICENSE)
265
265
  ---
266
266
 
267
267
  *Made for CS students, by CS students. <img src="public/pisces-logo-32.png" height="18" align="center" alt="Pisces">*
268
+
269
+ ---
270
+
271
+ ## Star History
272
+
273
+ <a href="https://www.star-history.com/?repos=AshishBagdane%2Fpi-cs&type=date&legend=top-left">
274
+ <picture>
275
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=AshishBagdane/pi-cs&type=date&theme=dark&legend=top-left" />
276
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=AshishBagdane/pi-cs&type=date&legend=top-left" />
277
+ <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=AshishBagdane/pi-cs&type=date&legend=top-left" />
278
+ </picture>
279
+ </a>
@@ -7,6 +7,7 @@
7
7
  * Detects standard CS university folder structures and injects
8
8
  * project context into the Pi session accordingly.
9
9
  */
10
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
10
11
  export type ProjectType = "python" | "typescript" | "java" | "cpp" | "rust" | "go" | "web" | "monorepo" | "unknown";
11
12
  export interface ProjectContext {
12
13
  type: ProjectType;
@@ -28,6 +29,7 @@ export interface FolderDetectionResult {
28
29
  }
29
30
  export declare function detectFolderContext(): FolderDetectionResult;
30
31
  export declare function summarizeFolderContext(result: FolderDetectionResult): string;
32
+ export default function (pi: ExtensionAPI): void;
31
33
  export declare function run(): {
32
34
  inject: string;
33
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"folder-detector.d.ts","sourceRoot":"","sources":["../../src/extensions/folder-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,KAAK,GACL,MAAM,GACN,IAAI,GACJ,KAAK,GACL,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AA+FD,wBAAgB,mBAAmB,IAAI,qBAAqB,CAmC3D;AAID,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAmB5E;AAID,wBAAgB,GAAG,IAAI;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CASxC"}
1
+ {"version":3,"file":"folder-detector.d.ts","sourceRoot":"","sources":["../../src/extensions/folder-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAMpE,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,KAAK,GACL,MAAM,GACN,IAAI,GACJ,KAAK,GACL,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AA+FD,wBAAgB,mBAAmB,IAAI,qBAAqB,CAmC3D;AAID,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAmB5E;AAID,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAYxC;AAID,wBAAgB,GAAG,IAAI;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CASxC"}
@@ -44,6 +44,7 @@ var __importStar = (this && this.__importStar) || (function () {
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
45
  exports.detectFolderContext = detectFolderContext;
46
46
  exports.summarizeFolderContext = summarizeFolderContext;
47
+ exports.default = default_1;
47
48
  exports.run = run;
48
49
  const fs = __importStar(require("fs"));
49
50
  const path = __importStar(require("path"));
@@ -185,6 +186,19 @@ function summarizeFolderContext(result) {
185
186
  }
186
187
  return lines.join("\n");
187
188
  }
189
+ // ─── Pi Extension Factory ──────────────────────────────────────────────────
190
+ function default_1(pi) {
191
+ let contextSummary = "";
192
+ pi.on("session_start", async () => {
193
+ const result = detectFolderContext();
194
+ contextSummary = summarizeFolderContext(result);
195
+ });
196
+ pi.on("before_agent_start", async (event) => {
197
+ if (!contextSummary)
198
+ return;
199
+ return { systemPrompt: `${event.systemPrompt}\n\n${contextSummary}` };
200
+ });
201
+ }
188
202
  // ─── Pi Extension Entry Point ──────────────────────────────────────────────
189
203
  function run() {
190
204
  const result = detectFolderContext();
@@ -1 +1 @@
1
- {"version":3,"file":"folder-detector.js","sourceRoot":"","sources":["../../src/extensions/folder-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"folder-detector.js","sourceRoot":"","sources":["../../src/extensions/folder-detector.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  * Monitors skill calls for academic integrity risk patterns.
8
8
  * Injects appropriate warnings and mode adjustments into the session.
9
9
  */
10
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
10
11
  export type IntegrityRisk = "none" | "low" | "medium" | "high";
11
12
  export interface IntegrityCheckResult {
12
13
  risk: IntegrityRisk;
@@ -15,6 +16,7 @@ export interface IntegrityCheckResult {
15
16
  shouldAskUser?: boolean;
16
17
  }
17
18
  export declare function checkIntegrityRisk(userInput: string, skillName: string): IntegrityCheckResult;
19
+ export default function (pi: ExtensionAPI): void;
18
20
  export declare function run(context: {
19
21
  skillName: string;
20
22
  userInput: string;
@@ -1 +1 @@
1
- {"version":3,"file":"integrity-guard.d.ts","sourceRoot":"","sources":["../../src/extensions/integrity-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAwCD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,oBAAoB,CAmCtB;AA6BD,wBAAgB,GAAG,CAAC,OAAO,EAAE;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkBrC"}
1
+ {"version":3,"file":"integrity-guard.d.ts","sourceRoot":"","sources":["../../src/extensions/integrity-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAIpE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAwCD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,oBAAoB,CAmCtB;AA6BD,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAexC;AAID,wBAAgB,GAAG,CAAC,OAAO,EAAE;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkBrC"}
@@ -10,6 +10,7 @@
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.checkIntegrityRisk = checkIntegrityRisk;
13
+ exports.default = default_1;
13
14
  exports.run = run;
14
15
  // ─── Risk Signals ──────────────────────────────────────────────────────────
15
16
  // High-risk: user is likely asking for submission-ready work
@@ -98,6 +99,21 @@ function buildMediumRiskWarning() {
98
99
 
99
100
  Just let me know!`;
100
101
  }
102
+ // ─── Pi Extension Factory ──────────────────────────────────────────────────
103
+ function default_1(pi) {
104
+ pi.on("input", async (event) => {
105
+ const skillMatch = event.text.match(/^\/skill:(\w+)/);
106
+ const skillName = skillMatch?.[1] ?? "";
107
+ const result = checkIntegrityRisk(event.text, skillName);
108
+ if (result.warning) {
109
+ pi.sendUserMessage(result.warning);
110
+ return result.risk === "high"
111
+ ? { action: "handled" }
112
+ : { action: "continue" };
113
+ }
114
+ return { action: "continue" };
115
+ });
116
+ }
101
117
  // ─── Pi Extension Entry Point ──────────────────────────────────────────────
102
118
  function run(context) {
103
119
  const result = checkIntegrityRisk(context.userInput, context.skillName);
@@ -1 +1 @@
1
- {"version":3,"file":"integrity-guard.js","sourceRoot":"","sources":["../../src/extensions/integrity-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrity-guard.js","sourceRoot":"","sources":["../../src/extensions/integrity-guard.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  * Tracks weekly activity across skills and sessions.
8
8
  * Surfaces burnout prevention nudges and weekly summaries.
9
9
  */
10
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
10
11
  export interface SessionRecord {
11
12
  date: string;
12
13
  durationMinutes: number;
@@ -22,6 +23,7 @@ export interface WeeklyStats {
22
23
  }
23
24
  export declare function getBurnoutNudge(sessionDurationMinutes: number, stats: WeeklyStats): string | null;
24
25
  export declare function buildWeeklySummary(stats: WeeklyStats): string;
26
+ export default function (pi: ExtensionAPI): void;
25
27
  export declare function run(context: {
26
28
  sessionDurationMinutes: number;
27
29
  skillsUsed: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"progress-tracker.d.ts","sourceRoot":"","sources":["../../src/extensions/progress-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAgFD,wBAAgB,eAAe,CAC7B,sBAAsB,EAAE,MAAM,EAC9B,KAAK,EAAE,WAAW,GACjB,MAAM,GAAG,IAAI,CAiBf;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CA6B7D;AAID,wBAAgB,GAAG,CAAC,OAAO,EAAE;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAmBlD"}
1
+ {"version":3,"file":"progress-tracker.d.ts","sourceRoot":"","sources":["../../src/extensions/progress-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAQpE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAgFD,wBAAgB,eAAe,CAC7B,sBAAsB,EAAE,MAAM,EAC9B,KAAK,EAAE,WAAW,GACjB,MAAM,GAAG,IAAI,CAiBf;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CA6B7D;AAID,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAyDxC;AAID,wBAAgB,GAAG,CAAC,OAAO,EAAE;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAmBlD"}
@@ -44,10 +44,12 @@ var __importStar = (this && this.__importStar) || (function () {
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
45
  exports.getBurnoutNudge = getBurnoutNudge;
46
46
  exports.buildWeeklySummary = buildWeeklySummary;
47
+ exports.default = default_1;
47
48
  exports.run = run;
48
49
  const fs = __importStar(require("fs"));
49
50
  const path = __importStar(require("path"));
50
51
  const os = __importStar(require("os"));
52
+ const semester_detector_1 = require("./semester-detector");
51
53
  // ─── Storage ───────────────────────────────────────────────────────────────
52
54
  const TRACKER_DIR = path.join(os.homedir(), ".pi-cs");
53
55
  const SESSIONS_FILE = path.join(TRACKER_DIR, "sessions.json");
@@ -155,6 +157,58 @@ function buildWeeklySummary(stats) {
155
157
  .filter(Boolean)
156
158
  .join("\n");
157
159
  }
160
+ // ─── Pi Extension Factory ──────────────────────────────────────────────────
161
+ function default_1(pi) {
162
+ const sessionStart = Date.now();
163
+ const skillsUsed = [];
164
+ pi.on("input", async (event) => {
165
+ const match = event.text.match(/^\/skill:(\w+)/);
166
+ if (match && !skillsUsed.includes(match[1])) {
167
+ skillsUsed.push(match[1]);
168
+ }
169
+ return { action: "continue" };
170
+ });
171
+ pi.on("before_agent_start", async (_event, ctx) => {
172
+ const elapsed = Math.round((Date.now() - sessionStart) / 60000);
173
+ if (elapsed > 0 && elapsed % 180 === 0) {
174
+ ctx.ui.notify(`🐠 You've been at this for ${elapsed} minutes. Take a short break — your brain consolidates learning during rest, not during grinding.`, "info");
175
+ }
176
+ });
177
+ pi.on("session_shutdown", async (_event, ctx) => {
178
+ const durationMinutes = Math.round((Date.now() - sessionStart) / 60000);
179
+ const { nudge, weeklySummary } = run({ sessionDurationMinutes: durationMinutes, skillsUsed });
180
+ if (nudge)
181
+ ctx.ui.notify(nudge, "info");
182
+ if (weeklySummary)
183
+ ctx.ui.notify(weeklySummary, "info");
184
+ });
185
+ pi.registerCommand("pisces", {
186
+ description: "Show Pisces status — semester context, skills used, session duration",
187
+ handler: async (_args, ctx) => {
188
+ const elapsed = Math.round((Date.now() - sessionStart) / 60000);
189
+ const detection = (0, semester_detector_1.detectSemesterContext)();
190
+ const semCtx = detection.context;
191
+ const lines = [
192
+ "🐠 **Pisces Status**",
193
+ "",
194
+ semCtx
195
+ ? `📅 ${semCtx.semester} ${semCtx.year}${semCtx.week ? ` — Week ${semCtx.week}` : ""}`
196
+ : "📅 No SEMESTER.md loaded",
197
+ semCtx?.courses?.length
198
+ ? `📚 Courses: ${semCtx.courses.map((c) => c.code).join(", ")}`
199
+ : "",
200
+ semCtx?.active_project ? `🔧 Project: ${semCtx.active_project}` : "",
201
+ `⏱ Session: ${elapsed} minute${elapsed !== 1 ? "s" : ""}`,
202
+ skillsUsed.length
203
+ ? `🛠 Skills used this session: ${skillsUsed.map((s) => `/skill:${s}`).join(", ")}`
204
+ : "🛠 No skills used yet — try /skill:explain, /skill:homework, or /skill:leetcode",
205
+ ]
206
+ .filter(Boolean)
207
+ .join("\n");
208
+ ctx.ui.notify(lines, "info");
209
+ },
210
+ });
211
+ }
158
212
  // ─── Pi Extension Entry Point ──────────────────────────────────────────────
159
213
  function run(context) {
160
214
  const sessions = loadSessions();
@@ -1 +1 @@
1
- {"version":3,"file":"progress-tracker.js","sourceRoot":"","sources":["../../src/extensions/progress-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"progress-tracker.js","sourceRoot":"","sources":["../../src/extensions/progress-tracker.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  * Searches for SEMESTER.md in the working directory and standard university
8
8
  * folder locations, then injects the semester context into the Pi session.
9
9
  */
10
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
10
11
  export interface Course {
11
12
  code: string;
12
13
  name: string;
@@ -42,6 +43,7 @@ export declare function detectSemesterContext(): DetectionResult;
42
43
  * Injected into the Pi session at startup.
43
44
  */
44
45
  export declare function generateGreeting(result: DetectionResult): string;
46
+ export default function (pi: ExtensionAPI): void;
45
47
  /**
46
48
  * Called by Pi on_startup and on_directory_change.
47
49
  * Returns the context injection for the active session.
@@ -1 +1 @@
1
- {"version":3,"file":"semester-detector.d.ts","sourceRoot":"","sources":["../../src/extensions/semester-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAuED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAsBvD;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAiChE;AAID;;;GAGG;AACH,wBAAgB,GAAG,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAuB1D"}
1
+ {"version":3,"file":"semester-detector.d.ts","sourceRoot":"","sources":["../../src/extensions/semester-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAOpE,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAuED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAsBvD;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAiChE;AAyDD,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAgCxC;AAID;;;GAGG;AACH,wBAAgB,GAAG,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAuB1D"}
@@ -44,6 +44,7 @@ var __importStar = (this && this.__importStar) || (function () {
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
45
  exports.detectSemesterContext = detectSemesterContext;
46
46
  exports.generateGreeting = generateGreeting;
47
+ exports.default = default_1;
47
48
  exports.run = run;
48
49
  const fs = __importStar(require("fs"));
49
50
  const path = __importStar(require("path"));
@@ -167,6 +168,81 @@ function generateGreeting(result) {
167
168
  .filter((l) => l !== undefined)
168
169
  .join("\n");
169
170
  }
171
+ // ─── System Prompt Context Block ───────────────────────────────────────────
172
+ function semesterContextBlock(ctx) {
173
+ return [
174
+ `[pi-cs] Semester: ${ctx.semester} ${ctx.year}`,
175
+ ctx.week != null ? `[pi-cs] Week: ${ctx.week}` : "",
176
+ ctx.year_of_study != null ? `[pi-cs] Year of study: ${ctx.year_of_study}` : "",
177
+ ctx.courses.length
178
+ ? `[pi-cs] Courses: ${ctx.courses.map((c) => `${c.code} (${c.name})`).join(", ")}`
179
+ : "",
180
+ ctx.active_project ? `[pi-cs] Active project: ${ctx.active_project}` : "",
181
+ ]
182
+ .filter(Boolean)
183
+ .join("\n");
184
+ }
185
+ // ─── Persona ───────────────────────────────────────────────────────────────
186
+ const APPEND_SYSTEM_PATH = path.join(os.homedir(), ".pi", "agent", "APPEND_SYSTEM.md");
187
+ function loadPersona() {
188
+ const candidates = [
189
+ path.resolve(__dirname, "../../SYSTEM.md"),
190
+ path.resolve(__dirname, "../../../SYSTEM.md"),
191
+ ];
192
+ for (const p of candidates) {
193
+ try {
194
+ const content = fs.readFileSync(p, "utf-8");
195
+ if (content.trim())
196
+ return content.trim();
197
+ }
198
+ catch {
199
+ continue;
200
+ }
201
+ }
202
+ return "";
203
+ }
204
+ const PERSONA = loadPersona();
205
+ function ensurePersonaInstalled() {
206
+ if (!PERSONA)
207
+ return "noop";
208
+ try {
209
+ const existing = fs.existsSync(APPEND_SYSTEM_PATH)
210
+ ? fs.readFileSync(APPEND_SYSTEM_PATH, "utf-8").trim()
211
+ : "";
212
+ if (existing === PERSONA)
213
+ return "noop";
214
+ fs.mkdirSync(path.dirname(APPEND_SYSTEM_PATH), { recursive: true });
215
+ fs.writeFileSync(APPEND_SYSTEM_PATH, PERSONA, "utf-8");
216
+ return existing === "" ? "installed" : "updated";
217
+ }
218
+ catch {
219
+ return "noop";
220
+ }
221
+ }
222
+ // ─── Pi Extension Factory ──────────────────────────────────────────────────
223
+ function default_1(pi) {
224
+ let semesterCtx = null;
225
+ pi.on("session_start", async (_event, ctx) => {
226
+ const personaStatus = ensurePersonaInstalled();
227
+ if (personaStatus === "installed" || personaStatus === "updated") {
228
+ ctx.ui.notify(`🐠 Pisces persona ${personaStatus} — restart Pi for it to take effect.`, "info");
229
+ }
230
+ const result = detectSemesterContext();
231
+ if (result.found && result.context) {
232
+ semesterCtx = result.context;
233
+ const { semester, year, week } = result.context;
234
+ ctx.ui.notify(`🐠 Pisces loaded — ${semester} ${year}${week ? `, Week ${week}` : ""}`, "info");
235
+ }
236
+ else {
237
+ ctx.ui.notify("🐠 Pisces loaded — no SEMESTER.md found. Create one to enable context awareness.", "info");
238
+ }
239
+ });
240
+ pi.on("before_agent_start", async (event) => {
241
+ if (!semesterCtx)
242
+ return;
243
+ return { systemPrompt: `${event.systemPrompt}\n\n${semesterContextBlock(semesterCtx)}` };
244
+ });
245
+ }
170
246
  // ─── Pi Extension Entry Point ──────────────────────────────────────────────
171
247
  /**
172
248
  * Called by Pi on_startup and on_directory_change.
@@ -1 +1 @@
1
- {"version":3,"file":"semester-detector.js","sourceRoot":"","sources":["../../src/extensions/semester-detector.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8GH,sDAsBC;AAQD,4CAiCC;AAQD,kBAuBC;AA1MD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAiCzB,8EAA8E;AAE9E,SAAS,cAAc;IACrB,OAAO;QACL,OAAO,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAG,aAAa,CAAC;AAEpC,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,OAAO,GAAoB;QAC/B,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9B,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,sBAAsB;QACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACvD,IAAI,QAAQ;YAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEpD,aAAa;QACb,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACvD,IAAI,SAAS;YAAE,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,UAAU;QACV,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACrD,IAAI,SAAS;YAAE,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,mBAAmB;QACnB,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAClE,IAAI,cAAc;YAChB,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtD,6BAA6B;QAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3E,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;gBACpB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACjE,IAAI,YAAY;YAAE,OAAO,CAAC,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAE9E;;;GAGG;AACH,SAAgB,qBAAqB;IACnC,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACpD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBAEzC,OAAO;oBACL,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,SAAS;oBACjB,OAAO;iBACR,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,uDAAuD;YACvD,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAE9E;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,MAAuB;IACtD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO;YACL,2CAA2C;YAC3C,EAAE;YACF,kIAAkI;YAClI,EAAE;YACF,8EAA8E;SAC/E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,UAAU,GACd,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACpB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/D,CAAC,CAAC,yBAAyB,CAAC;IAEhC,MAAM,WAAW,GAAG,GAAG,CAAC,cAAc;QACpC,CAAC,CAAC,0BAA0B,GAAG,CAAC,cAAc,IAAI;QAClD,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;QACL,4CAA4C,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,GAAG;QACnF,EAAE;QACF,kBAAkB;QAClB,UAAU;QACV,WAAW;QACX,EAAE;QACF,kHAAkH;KACnH;SACE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;SAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,8EAA8E;AAE9E;;;GAGG;AACH,SAAgB,GAAG;IACjB,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;IAEvC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,MAAM,GAAG;YACP,0DAA0D;YAC1D,kBAAkB,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM;YACtE,cAAc,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,MAAM;YACpD,uBAAuB,MAAM,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS,MAAM;YACtE,iBAAiB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;YAC3E,MAAM,CAAC,OAAO,CAAC,cAAc;gBAC3B,CAAC,CAAC,wBAAwB,MAAM,CAAC,OAAO,CAAC,cAAc,MAAM;gBAC7D,CAAC,CAAC,EAAE;SACP;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,OAAO;QACL,MAAM;QACN,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC;KACnC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"semester-detector.js","sourceRoot":"","sources":["../../src/extensions/semester-detector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aethrekh/pi-cs",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
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.3",
4
- "built_at": "2026-06-02T10:35:52.984Z",
3
+ "version": "0.1.4",
4
+ "built_at": "2026-06-04T10:40:50.911Z",
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.3
2
+ version: 0.1.4
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
@@ -8,7 +8,7 @@ license: MIT
8
8
  pi_version: ">=1.0.0"
9
9
 
10
10
  # Core system prompt that defines the academic persona
11
- system: system.md
11
+ system: SYSTEM.md
12
12
 
13
13
  # Skills (slash commands) registered by this package
14
14
  skills:
@@ -1,12 +0,0 @@
1
- /**
2
- * extensions/index.ts
3
- *
4
- * pi-cs (Pisces) — Pi Extension Entry Point
5
- *
6
- * Exports a default factory function that Pi loads via jiti.
7
- * Wires up semester context detection, academic integrity guard,
8
- * skill usage tracking, and burnout nudges.
9
- */
10
- import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
11
- export default function (pi: ExtensionAPI): void;
12
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAwHpE,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAsGxC"}
@@ -1,237 +0,0 @@
1
- "use strict";
2
- /**
3
- * extensions/index.ts
4
- *
5
- * pi-cs (Pisces) — Pi Extension Entry Point
6
- *
7
- * Exports a default factory function that Pi loads via jiti.
8
- * Wires up semester context detection, academic integrity guard,
9
- * skill usage tracking, and burnout nudges.
10
- */
11
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
- if (k2 === undefined) k2 = k;
13
- var desc = Object.getOwnPropertyDescriptor(m, k);
14
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
- desc = { enumerable: true, get: function() { return m[k]; } };
16
- }
17
- Object.defineProperty(o, k2, desc);
18
- }) : (function(o, m, k, k2) {
19
- if (k2 === undefined) k2 = k;
20
- o[k2] = m[k];
21
- }));
22
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
- Object.defineProperty(o, "default", { enumerable: true, value: v });
24
- }) : function(o, v) {
25
- o["default"] = v;
26
- });
27
- var __importStar = (this && this.__importStar) || (function () {
28
- var ownKeys = function(o) {
29
- ownKeys = Object.getOwnPropertyNames || function (o) {
30
- var ar = [];
31
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
- return ar;
33
- };
34
- return ownKeys(o);
35
- };
36
- return function (mod) {
37
- if (mod && mod.__esModule) return mod;
38
- var result = {};
39
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
- __setModuleDefault(result, mod);
41
- return result;
42
- };
43
- })();
44
- Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.default = default_1;
46
- const fs = __importStar(require("node:fs"));
47
- const path = __importStar(require("node:path"));
48
- const os = __importStar(require("node:os"));
49
- const progress_tracker_1 = require("./progress-tracker");
50
- function findSemesterMd() {
51
- const searchPaths = [
52
- process.cwd(),
53
- path.join(os.homedir(), "university"),
54
- path.join(os.homedir(), "uni"),
55
- path.join(os.homedir(), "college"),
56
- path.join(os.homedir(), "Documents", "university"),
57
- ];
58
- for (const dir of searchPaths) {
59
- try {
60
- const candidate = path.join(dir, "SEMESTER.md");
61
- if (fs.existsSync(candidate))
62
- return candidate;
63
- }
64
- catch {
65
- continue;
66
- }
67
- }
68
- return null;
69
- }
70
- function parseSemesterMd(content) {
71
- const ctx = {
72
- semester: "Unknown",
73
- year: new Date().getFullYear(),
74
- courses: [],
75
- };
76
- for (const line of content.split("\n")) {
77
- const t = line.trim();
78
- const sem = t.match(/^semester[:\s]+(.+)/i);
79
- if (sem)
80
- ctx.semester = sem[1].trim();
81
- const yr = t.match(/^year[:\s]+(\d{4})/i);
82
- if (yr)
83
- ctx.year = parseInt(yr[1]);
84
- const wk = t.match(/^week[:\s]+(\d+)/i);
85
- if (wk)
86
- ctx.week = parseInt(wk[1]);
87
- const sy = t.match(/^year.of.study[:\s]+(\d)/i);
88
- if (sy)
89
- ctx.year_of_study = parseInt(sy[1]);
90
- const course = t.match(/^[-*]\s+([A-Z]{2,4}\d{2,4})[:\s]+(.+)/);
91
- if (course)
92
- ctx.courses.push({ code: course[1], name: course[2].trim() });
93
- const proj = t.match(/^active.project[:\s]+(.+)/i);
94
- if (proj)
95
- ctx.active_project = proj[1].trim();
96
- }
97
- return ctx;
98
- }
99
- function semesterContextBlock(ctx) {
100
- return [
101
- `[pi-cs] Semester: ${ctx.semester} ${ctx.year}`,
102
- ctx.week != null ? `[pi-cs] Week: ${ctx.week}` : "",
103
- ctx.year_of_study != null ? `[pi-cs] Year of study: ${ctx.year_of_study}` : "",
104
- ctx.courses.length
105
- ? `[pi-cs] Courses: ${ctx.courses.map((c) => `${c.code} (${c.name})`).join(", ")}`
106
- : "",
107
- ctx.active_project ? `[pi-cs] Active project: ${ctx.active_project}` : "",
108
- ]
109
- .filter(Boolean)
110
- .join("\n");
111
- }
112
- // ─── Academic Integrity Guard ──────────────────────────────────────────────
113
- const HIGH_RISK_PATTERNS = [
114
- /write.*(my|the)\s+(entire|whole|complete|full)\s+(assignment|homework|lab|project)/i,
115
- /do\s+my\s+(homework|assignment|lab|project)/i,
116
- /complete\s+(my|the)\s+(assignment|homework|lab|task)/i,
117
- /finish\s+my\s+(assignment|homework|lab)\s+for\s+me/i,
118
- ];
119
- const SAFE_OVERRIDE_PATTERNS = [
120
- /\bpractic/i,
121
- /\blearn\b/i,
122
- /\bunderstand\b/i,
123
- /\bjust\s+curious\b/i,
124
- /\bnot\s+for\s+grade/i,
125
- /\bpersonal\s+project\b/i,
126
- /\bleetcode\b/i,
127
- ];
128
- function integrityWarning(text) {
129
- if (SAFE_OVERRIDE_PATTERNS.some((p) => p.test(text)))
130
- return null;
131
- if (HIGH_RISK_PATTERNS.some((p) => p.test(text))) {
132
- return [
133
- "⚠️ **Academic Integrity Notice**",
134
- "",
135
- "It sounds like you want me to complete a graded assignment. I won't do that — it would hurt your learning and could get you in serious trouble.",
136
- "",
137
- "Here's what I *can* do:",
138
- "- Break down the problem and explain the concepts",
139
- "- Give hints and guided pseudocode",
140
- "- Help you debug your own code",
141
- "- Explain similar example problems",
142
- "",
143
- "Tell me where you're actually stuck and we'll work through it together. 🐠",
144
- ].join("\n");
145
- }
146
- return null;
147
- }
148
- // ─── Pi Extension Factory ──────────────────────────────────────────────────
149
- function default_1(pi) {
150
- let semesterCtx = null;
151
- const sessionStart = Date.now();
152
- const skillsUsed = [];
153
- // ── Load semester context at startup ─────────────────────────────────
154
- pi.on("session_start", async (_event, ctx) => {
155
- const semFile = findSemesterMd();
156
- if (semFile) {
157
- try {
158
- const content = fs.readFileSync(semFile, "utf-8");
159
- semesterCtx = parseSemesterMd(content);
160
- ctx.ui.notify(`🐠 Pisces loaded — ${semesterCtx.semester} ${semesterCtx.year}${semesterCtx.week ? `, Week ${semesterCtx.week}` : ""}`, "info");
161
- }
162
- catch {
163
- ctx.ui.notify("🐠 Pisces loaded", "info");
164
- }
165
- }
166
- else {
167
- ctx.ui.notify("🐠 Pisces loaded — no SEMESTER.md found. Create one to enable context awareness.", "info");
168
- }
169
- });
170
- // ── Inject semester context into system prompt each turn ─────────────
171
- pi.on("before_agent_start", async (event) => {
172
- if (!semesterCtx)
173
- return;
174
- const contextBlock = semesterContextBlock(semesterCtx);
175
- const appendedSystemPrompt = `${event.systemPrompt}\n\n${contextBlock}`;
176
- return { systemPrompt: appendedSystemPrompt };
177
- });
178
- // ── Academic integrity guard on every input ───────────────────────────
179
- pi.on("input", async (event) => {
180
- const warning = integrityWarning(event.text);
181
- if (warning) {
182
- pi.sendUserMessage(warning);
183
- return { action: "handled" };
184
- }
185
- return { action: "continue" };
186
- });
187
- // ── Track which skills are used this session ──────────────────────────
188
- pi.on("input", async (event) => {
189
- const match = event.text.match(/^\/skill:(\w+)/);
190
- if (match && !skillsUsed.includes(match[1])) {
191
- skillsUsed.push(match[1]);
192
- }
193
- return { action: "continue" };
194
- });
195
- // ── Burnout nudge at 3-hour mark ──────────────────────────────────────
196
- pi.on("before_agent_start", async (_event, ctx) => {
197
- const elapsed = Math.round((Date.now() - sessionStart) / 60000);
198
- if (elapsed > 0 && elapsed % 180 === 0) {
199
- ctx.ui.notify(`🐠 You've been at this for ${elapsed} minutes. Take a short break — your brain consolidates learning during rest, not during grinding.`, "info");
200
- }
201
- });
202
- // ── Persist session record and surface nudge/summary on close ────────
203
- pi.on("session_shutdown", async (_event, ctx) => {
204
- const durationMinutes = Math.round((Date.now() - sessionStart) / 60000);
205
- const { nudge, weeklySummary } = (0, progress_tracker_1.run)({ sessionDurationMinutes: durationMinutes, skillsUsed });
206
- if (nudge)
207
- ctx.ui.notify(nudge, "info");
208
- if (weeklySummary)
209
- ctx.ui.notify(weeklySummary, "info");
210
- });
211
- // ── /pisces command: show session status ──────────────────────────────
212
- pi.registerCommand("pisces", {
213
- description: "Show Pisces status — semester context, skills used, session duration",
214
- handler: async (_args, ctx) => {
215
- const elapsed = Math.round((Date.now() - sessionStart) / 60000);
216
- const lines = [
217
- "🐠 **Pisces Status**",
218
- "",
219
- semesterCtx
220
- ? `📅 ${semesterCtx.semester} ${semesterCtx.year}${semesterCtx.week ? ` — Week ${semesterCtx.week}` : ""}`
221
- : "📅 No SEMESTER.md loaded",
222
- semesterCtx?.courses.length
223
- ? `📚 Courses: ${semesterCtx.courses.map((c) => c.code).join(", ")}`
224
- : "",
225
- semesterCtx?.active_project ? `🔧 Project: ${semesterCtx.active_project}` : "",
226
- `⏱ Session: ${elapsed} minute${elapsed !== 1 ? "s" : ""}`,
227
- skillsUsed.length
228
- ? `🛠 Skills used this session: ${skillsUsed.map((s) => `/skill:${s}`).join(", ")}`
229
- : "🛠 No skills used yet — try /skill:explain, /skill:homework, or /skill:leetcode",
230
- ]
231
- .filter(Boolean)
232
- .join("\n");
233
- ctx.ui.notify(lines, "info");
234
- },
235
- });
236
- }
237
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"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"}
File without changes