@lebronj/pi-suite 0.1.11 → 0.1.12

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/README.md CHANGED
@@ -12,14 +12,14 @@ pi install npm:@lebronj/pi-suite
12
12
  Or use the bootstrap script to install Pi, configure the team OpenAI-compatible endpoint, install this suite, and set up Bun + qmd for memory search:
13
13
 
14
14
  ```bash
15
- curl -fsSL https://registry.npmjs.org/@lebronj/pi-suite/-/pi-suite-0.1.8.tgz | tar -xzO package/scripts/bootstrap.sh | bash
15
+ curl -fsSL https://registry.npmjs.org/@lebronj/pi-suite/-/pi-suite-0.1.12.tgz | tar -xzO package/scripts/bootstrap.sh | bash
16
16
  ```
17
17
 
18
18
  ## What Is Included
19
19
 
20
- - Local extensions: autogoal, goal mode, pet, prompt URL widget, TUI redraw stats, snake, TPS notifications.
20
+ - Local extensions: autogoal, goal mode, pet, prompt URL widget, snake, TPS notifications.
21
21
  - Prompts: changelog audit, issue analysis, PR review, review workflow, commit workflow, wrap workflow.
22
- - Skills: provider checklist, weather, LeetCode array practice, Pi capability reference, image-to-editable-PPT workflow.
22
+ - Skills: provider checklist, Pi capability reference, image-to-editable-PPT workflow.
23
23
  - Vendored package: `@jhp/pi-memory`, including qmd search, external curator service, and memory/skill-draft versioning.
24
24
 
25
25
  `pi-mcp-adapter`, `pi-subagents`, and `pi-web-access` are loaded by this suite. Do not install them separately unless you filter suite resources, because duplicate extension tools/flags can conflict.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lebronj/pi-suite",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "description": "JHP's Pi extension suite for team coding workflows",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -206,7 +206,6 @@ The pet extension provides a small terminal companion and durable profile.
206
206
  ## UI And Utility Extensions
207
207
 
208
208
  - `prompt-url-widget.ts`: detects PR/issue prompt templates, fetches GitHub metadata with `gh`, shows a widget, and names the session when possible.
209
- - `redraws.ts`: `/tui` shows TUI full redraw stats.
210
209
  - `snake.ts`: `/snake` opens a TUI snake game; `Esc` pauses/saves, `q` quits, arrows/WASD move.
211
210
  - `tps.ts`: after each assistant run, shows tokens-per-second and token usage details.
212
211
  - `memory-curator.ts`: deprecated compatibility notice only; external curation is managed by pi-memory service tools.
@@ -217,8 +216,6 @@ Suite skills currently include:
217
216
 
218
217
  - `add-llm-provider`: checklist for adding providers to `packages/ai`.
219
218
  - `image-to-editable-ppt-slide`: rebuild reference images as editable PowerPoint slides.
220
- - `leetcode-array`: array problem patterns and Python references.
221
- - `weather`: current weather and forecasts using no-key services.
222
219
  - `pi-skill`: this capability index.
223
220
 
224
221
  Optional package-provided skills can include:
@@ -1,24 +0,0 @@
1
- /**
2
- * Redraws Extension
3
- *
4
- * Exposes /tui to show TUI redraw stats.
5
- */
6
-
7
- import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
8
- import { Text } from "@earendil-works/pi-tui";
9
-
10
- export default function (pi: ExtensionAPI) {
11
- pi.registerCommand("tui", {
12
- description: "Show TUI stats",
13
- handler: async (_args, ctx) => {
14
- if (!ctx.hasUI) return;
15
- let redraws = 0;
16
- await ctx.ui.custom<void>((tui, _theme, _keybindings, done) => {
17
- redraws = tui.fullRedraws;
18
- done(undefined);
19
- return new Text("", 0, 0);
20
- });
21
- ctx.ui.notify(`TUI full redraws: ${redraws}`, "info");
22
- },
23
- });
24
- }
@@ -1,10 +0,0 @@
1
- import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
-
3
- export default function simpleRepliesExtension(pi: ExtensionAPI): void {
4
- pi.on("before_agent_start", async (event) => {
5
- if (event.prompt.trim().toLowerCase() !== "hi") return undefined;
6
- return {
7
- systemPrompt: `${event.systemPrompt}\n\nFor this turn only, the user's entire message is "hi". Reply exactly: hi`,
8
- };
9
- });
10
- }
@@ -1,40 +0,0 @@
1
- ---
2
- name: leetcode-array
3
- description: Common LeetCode array problems with Python reference solutions. Use when the user wants array practice, standard solution patterns, or quick runnable examples.
4
- metadata:
5
- clawdbot:
6
- emoji: "🧮"
7
- requires:
8
- files: ["problems/*.py"]
9
- ---
10
-
11
- # LeetCode Array
12
-
13
- Use this skill when the user wants representative LeetCode array exercises with runnable Python solutions.
14
-
15
- ## Included problems
16
-
17
- - `problems/two_sum.py` - hash map lookup for complement matching
18
- - `problems/best_time_to_buy_and_sell_stock.py` - one-pass minimum tracking
19
- - `problems/product_of_array_except_self.py` - prefix and suffix products
20
-
21
- ## How to use
22
-
23
- Read the matching problem file first, then explain:
24
- - the core pattern
25
- - time and space complexity
26
- - one common mistake
27
-
28
- Run examples locally if needed:
29
-
30
- ```bash
31
- python3 problems/two_sum.py
32
- python3 problems/best_time_to_buy_and_sell_stock.py
33
- python3 problems/product_of_array_except_self.py
34
- ```
35
-
36
- ## Answering style
37
-
38
- - Start with the pattern before the code
39
- - Prefer the runnable Python examples in `problems/`
40
- - If the user asks for another language, translate from the Python reference solution
@@ -1,19 +0,0 @@
1
- from __future__ import annotations
2
-
3
-
4
- def max_profit(prices: list[int]) -> int:
5
- min_price = float("inf")
6
- best = 0
7
-
8
- for price in prices:
9
- if price < min_price:
10
- min_price = price
11
- continue
12
- best = max(best, price - min_price)
13
-
14
- return best
15
-
16
-
17
- if __name__ == "__main__":
18
- sample_prices = [7, 1, 5, 3, 6, 4]
19
- print(max_profit(sample_prices))
@@ -1,22 +0,0 @@
1
- from __future__ import annotations
2
-
3
-
4
- def product_except_self(nums: list[int]) -> list[int]:
5
- result = [1] * len(nums)
6
-
7
- prefix = 1
8
- for index, value in enumerate(nums):
9
- result[index] = prefix
10
- prefix *= value
11
-
12
- suffix = 1
13
- for index in range(len(nums) - 1, -1, -1):
14
- result[index] *= suffix
15
- suffix *= nums[index]
16
-
17
- return result
18
-
19
-
20
- if __name__ == "__main__":
21
- sample_nums = [1, 2, 3, 4]
22
- print(product_except_self(sample_nums))
@@ -1,19 +0,0 @@
1
- from __future__ import annotations
2
-
3
-
4
- def two_sum(nums: list[int], target: int) -> list[int]:
5
- seen: dict[int, int] = {}
6
-
7
- for index, value in enumerate(nums):
8
- complement = target - value
9
- if complement in seen:
10
- return [seen[complement], index]
11
- seen[value] = index
12
-
13
- return []
14
-
15
-
16
- if __name__ == "__main__":
17
- sample_nums = [2, 7, 11, 15]
18
- sample_target = 9
19
- print(two_sum(sample_nums, sample_target))
@@ -1,49 +0,0 @@
1
- ---
2
- name: weather
3
- description: Get current weather and forecasts (no API key required).
4
- homepage: https://wttr.in/:help
5
- metadata: {"clawdbot":{"emoji":"🌤️","requires":{"bins":["curl"]}}}
6
- ---
7
-
8
- # Weather
9
-
10
- Two free services, no API keys needed.
11
-
12
- ## wttr.in (primary)
13
-
14
- Quick one-liner:
15
- ```bash
16
- curl -s "wttr.in/London?format=3"
17
- # Output: London: ⛅️ +8°C
18
- ```
19
-
20
- Compact format:
21
- ```bash
22
- curl -s "wttr.in/London?format=%l:+%c+%t+%h+%w"
23
- # Output: London: ⛅️ +8°C 71% ↙5km/h
24
- ```
25
-
26
- Full forecast:
27
- ```bash
28
- curl -s "wttr.in/London?T"
29
- ```
30
-
31
- Format codes: `%c` condition · `%t` temp · `%h` humidity · `%w` wind · `%l` location · `%m` moon
32
-
33
- Tips:
34
- - URL-encode spaces: `wttr.in/New+York`
35
- - Airport codes: `wttr.in/JFK`
36
- - Units: `?m` (metric) `?u` (USCS)
37
- - Today only: `?1` · Current only: `?0`
38
- - PNG: `curl -s "wttr.in/Berlin.png" -o /tmp/weather.png`
39
-
40
- ## Open-Meteo (fallback, JSON)
41
-
42
- Free, no key, good for programmatic use:
43
- ```bash
44
- curl -s "https://api.open-meteo.com/v1/forecast?latitude=51.5&longitude=-0.12&current_weather=true"
45
- ```
46
-
47
- Find coordinates for a city, then query. Returns JSON with temp, windspeed, weathercode.
48
-
49
- Docs: https://open-meteo.com/en/docs