@pi-unipi/unipi 3.0.0-alpha.27 → 3.0.0-alpha.28

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
@@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [3.0.0-alpha.28] — 2026-10-04
10
+
11
+ ### Changed
12
+ - `utility`: **`/unipi:summarize` re-summarizes the last reply**, with the session as context. The command sends only `/skill:summarize`, plus any text you add, which reaches the skill as your question ("what would it change?" now asks about the last reply). It no longer wraps your text in a "summarize this session" prompt.
13
+
9
14
  ## [3.0.0-alpha.27] — 2026-10-04
10
15
 
11
16
  ### Added
package/README.md CHANGED
@@ -27,9 +27,16 @@
27
27
  ## Install
28
28
 
29
29
  ```bash
30
- pi install npm:@pi-unipi/unipi
30
+ pi install npm:@pi-unipi/unipi@alpha
31
31
  ```
32
32
 
33
+ > [!NOTE]
34
+ > **UniPi 3 is in alpha.** This README describes v3, published under the npm
35
+ > `alpha` tag. Plain `pi install npm:@pi-unipi/unipi` still installs the stable
36
+ > 2.x line ([2.x README](https://github.com/Neuron-Mr-White/unipi/tree/main#readme)).
37
+ > To update an alpha install: `pi update npm:@pi-unipi/unipi@alpha`. To go back
38
+ > to stable: `pi install npm:@pi-unipi/unipi@latest`.
39
+
33
40
  UniPi needs [Pi](https://www.npmjs.com/package/@earendil-works/pi-coding-agent)
34
41
  `0.87.1` or later. This command installs 21 extension packages. Each package
35
42
  also works alone.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/unipi",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "All-in-one extension suite for Pi coding agent",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -83,26 +83,26 @@
83
83
  "typebox": "^1.1.38"
84
84
  },
85
85
  "dependencies": {
86
- "@pi-unipi/ask-user": "3.0.0-alpha.27",
87
- "@pi-unipi/background-tasks": "3.0.0-alpha.27",
88
- "@pi-unipi/btw": "3.0.0-alpha.27",
89
- "@pi-unipi/command-enchantment": "3.0.0-alpha.27",
90
- "@pi-unipi/compactor": "3.0.0-alpha.27",
91
- "@pi-unipi/core": "3.0.0-alpha.27",
92
- "@pi-unipi/footer": "3.0.0-alpha.27",
93
- "@pi-unipi/fusion": "3.0.0-alpha.27",
94
- "@pi-unipi/info-screen": "3.0.0-alpha.27",
95
- "@pi-unipi/input-shortcuts": "3.0.0-alpha.27",
96
- "@pi-unipi/kanboard": "3.0.0-alpha.27",
97
- "@pi-unipi/mcp": "3.0.0-alpha.27",
98
- "@pi-unipi/memory": "3.0.0-alpha.27",
99
- "@pi-unipi/notify": "3.0.0-alpha.27",
100
- "@pi-unipi/skill-registry": "3.0.0-alpha.27",
101
- "@pi-unipi/subagents": "3.0.0-alpha.27",
102
- "@pi-unipi/updater": "3.0.0-alpha.27",
103
- "@pi-unipi/utility": "3.0.0-alpha.27",
104
- "@pi-unipi/web-api": "3.0.0-alpha.27",
105
- "@pi-unipi/workflow": "3.0.0-alpha.27"
86
+ "@pi-unipi/ask-user": "3.0.0-alpha.28",
87
+ "@pi-unipi/background-tasks": "3.0.0-alpha.28",
88
+ "@pi-unipi/btw": "3.0.0-alpha.28",
89
+ "@pi-unipi/command-enchantment": "3.0.0-alpha.28",
90
+ "@pi-unipi/compactor": "3.0.0-alpha.28",
91
+ "@pi-unipi/core": "3.0.0-alpha.28",
92
+ "@pi-unipi/footer": "3.0.0-alpha.28",
93
+ "@pi-unipi/fusion": "3.0.0-alpha.28",
94
+ "@pi-unipi/info-screen": "3.0.0-alpha.28",
95
+ "@pi-unipi/input-shortcuts": "3.0.0-alpha.28",
96
+ "@pi-unipi/kanboard": "3.0.0-alpha.28",
97
+ "@pi-unipi/mcp": "3.0.0-alpha.28",
98
+ "@pi-unipi/memory": "3.0.0-alpha.28",
99
+ "@pi-unipi/notify": "3.0.0-alpha.28",
100
+ "@pi-unipi/skill-registry": "3.0.0-alpha.28",
101
+ "@pi-unipi/subagents": "3.0.0-alpha.28",
102
+ "@pi-unipi/updater": "3.0.0-alpha.28",
103
+ "@pi-unipi/utility": "3.0.0-alpha.28",
104
+ "@pi-unipi/web-api": "3.0.0-alpha.28",
105
+ "@pi-unipi/workflow": "3.0.0-alpha.28"
106
106
  },
107
107
  "devDependencies": {
108
108
  "@earendil-works/pi-agent-core": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/ask-user",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Structured user input tool for Pi coding agent — single-select, multi-select, freeform",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -40,7 +40,7 @@
40
40
  "access": "public"
41
41
  },
42
42
  "dependencies": {
43
- "@pi-unipi/core": "3.0.0-alpha.27"
43
+ "@pi-unipi/core": "3.0.0-alpha.28"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/command-enchantment",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Enhanced TUI autocomplete for /unipi:* commands — colored, sorted, and grouped by package",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -160,7 +160,7 @@ export const COMMAND_DESCRIPTIONS: Record<string, string> = {
160
160
  "unipi:cleanup": "Remove stale UniPi temp files and leftovers (preview first)",
161
161
  "unipi:doctor": "Check UniPi's runtime: config, model cache, Decision Model, skills",
162
162
  "unipi:answer": "Answer the last reply — fixed input under the scrollable reply, per question, or web form",
163
- "unipi:summarize": "Summarize this session — answer first, then findings, open items, questions; add text to set a focus",
163
+ "unipi:summarize": "Summarize your last reply again (answer first, then findings, open items, questions). Add text to ask about it",
164
164
  "unipi:skills": "Manage skills — on/off per project, listed or not, the skill vault",
165
165
 
166
166
  "unipi:kanboard": "Kanboard — capture tasks, run them, open the board",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/background-tasks",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Background tasks for UniPi — durable shell jobs and delegated background agents with a footer dock",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@earendil-works/pi-ai": "^0.87.1",
13
- "@pi-unipi/core": "3.0.0-alpha.27",
13
+ "@pi-unipi/core": "3.0.0-alpha.28",
14
14
  "turndown": "^7.2.4"
15
15
  },
16
16
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/btw",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "A pi extension for parallel side conversations with /unipi:btw — part of the Unipi suite",
5
5
  "type": "module",
6
6
  "main": "extensions/btw.ts",
@@ -37,7 +37,7 @@
37
37
  "@earendil-works/pi-tui": "^0.87.1"
38
38
  },
39
39
  "dependencies": {
40
- "@pi-unipi/core": "3.0.0-alpha.27"
40
+ "@pi-unipi/core": "3.0.0-alpha.28"
41
41
  },
42
42
  "pi": {
43
43
  "extensions": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/compactor",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Compaction for Pi — lossless zero-LLM or model summaries, rebuilt from full history, with session recall",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -33,8 +33,8 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@pi-unipi/core": "3.0.0-alpha.27",
37
- "@pi-unipi/info-screen": "3.0.0-alpha.27",
36
+ "@pi-unipi/core": "3.0.0-alpha.28",
37
+ "@pi-unipi/info-screen": "3.0.0-alpha.28",
38
38
  "@earendil-works/pi-agent-core": "^0.87.1"
39
39
  },
40
40
  "peerDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/core",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Shared utilities, event types, and constants for Unipi extension suite",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/footer",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Persistent status bar for Unipi — subscribes to UNIPI_EVENTS and renders key stats from all unipi packages",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -32,8 +32,8 @@
32
32
  "access": "public"
33
33
  },
34
34
  "dependencies": {
35
- "@pi-unipi/core": "3.0.0-alpha.27",
36
- "@pi-unipi/background-tasks": "3.0.0-alpha.27"
35
+ "@pi-unipi/core": "3.0.0-alpha.28",
36
+ "@pi-unipi/background-tasks": "3.0.0-alpha.28"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/fusion",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Devin-style model picker, fusion presets (lead + sidekick), and Local Fusion runtime for UniPi",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -32,9 +32,9 @@
32
32
  "access": "public"
33
33
  },
34
34
  "dependencies": {
35
- "@pi-unipi/core": "3.0.0-alpha.27",
36
- "@pi-unipi/subagents": "3.0.0-alpha.27",
37
- "@pi-unipi/utility": "3.0.0-alpha.27"
35
+ "@pi-unipi/core": "3.0.0-alpha.28",
36
+ "@pi-unipi/subagents": "3.0.0-alpha.28",
37
+ "@pi-unipi/utility": "3.0.0-alpha.28"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "@earendil-works/pi-ai": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/info-screen",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Unicrab startup splash and the /unipi:info dashboard — this session, context, usage, compaction savings",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -33,7 +33,7 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@pi-unipi/core": "3.0.0-alpha.27"
36
+ "@pi-unipi/core": "3.0.0-alpha.28"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/input-shortcuts",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Keyboard shortcuts for stash/restore, undo/redo, clipboard, and thinking toggle — chord-based overlay system",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -33,7 +33,7 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@pi-unipi/core": "3.0.0-alpha.27"
36
+ "@pi-unipi/core": "3.0.0-alpha.28"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/kanboard",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Kanboard v3 — deferred-work board: CLI/daemon bridge, task runner and skill",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -31,7 +31,7 @@
31
31
  "access": "public"
32
32
  },
33
33
  "dependencies": {
34
- "@pi-unipi/core": "3.0.0-alpha.27"
34
+ "@pi-unipi/core": "3.0.0-alpha.28"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -48,10 +48,10 @@
48
48
  "themes": []
49
49
  },
50
50
  "optionalDependencies": {
51
- "@pi-unipi/kanboard-linux-x64": "3.0.0-alpha.27",
52
- "@pi-unipi/kanboard-linux-arm64": "3.0.0-alpha.27",
53
- "@pi-unipi/kanboard-darwin-x64": "3.0.0-alpha.27",
54
- "@pi-unipi/kanboard-darwin-arm64": "3.0.0-alpha.27",
55
- "@pi-unipi/kanboard-win32-x64": "3.0.0-alpha.27"
51
+ "@pi-unipi/kanboard-linux-x64": "3.0.0-alpha.28",
52
+ "@pi-unipi/kanboard-linux-arm64": "3.0.0-alpha.28",
53
+ "@pi-unipi/kanboard-darwin-x64": "3.0.0-alpha.28",
54
+ "@pi-unipi/kanboard-darwin-arm64": "3.0.0-alpha.28",
55
+ "@pi-unipi/kanboard-win32-x64": "3.0.0-alpha.28"
56
56
  }
57
57
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/long-horizon",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Long-horizon execution for Pi — mode-gated /goal /ralph /swarm /graph orchestration with a TypeSafe prompt judge",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -37,7 +37,7 @@
37
37
  "access": "public"
38
38
  },
39
39
  "dependencies": {
40
- "@pi-unipi/core": "3.0.0-alpha.27"
40
+ "@pi-unipi/core": "3.0.0-alpha.28"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/mcp",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "MCP server management extension for Pi coding agent — browse, add, configure, and use MCP servers",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -30,7 +30,7 @@
30
30
  "test": "npx tsx --test tests/**/*.test.ts"
31
31
  },
32
32
  "dependencies": {
33
- "@pi-unipi/core": "3.0.0-alpha.27"
33
+ "@pi-unipi/core": "3.0.0-alpha.28"
34
34
  },
35
35
  "peerDependencies": {
36
36
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/memory",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Persistent cross-session memory on MemPalace (auto-installed): daemon-routed writes, shared palace with other agents, for Pi coding agent",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -42,8 +42,8 @@
42
42
  "README.md"
43
43
  ],
44
44
  "dependencies": {
45
- "@pi-unipi/core": "3.0.0-alpha.27",
46
- "@pi-unipi/info-screen": "3.0.0-alpha.27",
45
+ "@pi-unipi/core": "3.0.0-alpha.28",
46
+ "@pi-unipi/info-screen": "3.0.0-alpha.28",
47
47
  "js-yaml": "^4.1.0"
48
48
  },
49
49
  "peerDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/notify",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Cross-platform notification extension for Pi — native OS, Gotify, and Telegram notifications for agent lifecycle events",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -34,7 +34,7 @@
34
34
  "access": "public"
35
35
  },
36
36
  "dependencies": {
37
- "@pi-unipi/core": "3.0.0-alpha.27",
37
+ "@pi-unipi/core": "3.0.0-alpha.28",
38
38
  "node-notifier": "^10.0.1"
39
39
  },
40
40
  "peerDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/skill-registry",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Skill registry for pi — per-project skill on/off, a skill vault, and jev-judged skill exposure",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "main": "index.ts",
35
35
  "dependencies": {
36
- "@pi-unipi/core": "3.0.0-alpha.27"
36
+ "@pi-unipi/core": "3.0.0-alpha.28"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/subagents",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Subagents for UniPi — Devin-model independent child agents",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -9,8 +9,8 @@
9
9
  "test": "npx tsx --test src/__tests__/*.test.ts"
10
10
  },
11
11
  "dependencies": {
12
- "@pi-unipi/core": "3.0.0-alpha.27",
13
- "@pi-unipi/utility": "3.0.0-alpha.27",
12
+ "@pi-unipi/core": "3.0.0-alpha.28",
13
+ "@pi-unipi/utility": "3.0.0-alpha.28",
14
14
  "@earendil-works/pi-agent-core": "^0.87.1",
15
15
  "acorn": "8.18.0"
16
16
  },
@@ -10735,8 +10735,7 @@ init_core();
10735
10735
  var SUMMARIZE_SKILL = "summarize";
10736
10736
  function summarizePrompt(focus) {
10737
10737
  const f = focus.trim();
10738
- const scope = f ? `Summarize this session for me, with the focus on: ${f}` : "Summarize this session for me: what we did, why, and where it stands now.";
10739
- return `/skill:${SUMMARIZE_SKILL} ${scope} Use only what happened in this session. Do not call tools.`;
10738
+ return f ? `/skill:${SUMMARIZE_SKILL} ${f}` : `/skill:${SUMMARIZE_SKILL}`;
10740
10739
  }
10741
10740
  function hasSummarizeSkill(pi) {
10742
10741
  try {
@@ -10761,7 +10760,7 @@ function registerSummarizeCommand(pi) {
10761
10760
  sendHarnessUserMessage(
10762
10761
  pi,
10763
10762
  summarizePrompt(focus),
10764
- { source: "Utility", title: "Summarize", synopsis: focus ? `focus: ${focus}` : "whole session" },
10763
+ { source: "Utility", title: "Summarize", synopsis: focus ? `ask: ${focus}` : "last reply" },
10765
10764
  { expandPromptTemplates: true }
10766
10765
  );
10767
10766
  await new Promise((r) => setTimeout(r, 0));
@@ -42174,7 +42173,7 @@ var COMMAND_DESCRIPTIONS = {
42174
42173
  "unipi:cleanup": "Remove stale UniPi temp files and leftovers (preview first)",
42175
42174
  "unipi:doctor": "Check UniPi's runtime: config, model cache, Decision Model, skills",
42176
42175
  "unipi:answer": "Answer the last reply \u2014 fixed input under the scrollable reply, per question, or web form",
42177
- "unipi:summarize": "Summarize this session \u2014 answer first, then findings, open items, questions; add text to set a focus",
42176
+ "unipi:summarize": "Summarize your last reply again (answer first, then findings, open items, questions). Add text to ask about it",
42178
42177
  "unipi:skills": "Manage skills \u2014 on/off per project, listed or not, the skill vault",
42179
42178
  "unipi:kanboard": "Kanboard \u2014 capture tasks, run them, open the board",
42180
42179
  "unipi:kanboard-add": "Kanboard \u2014 capture a task into Backlog",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/updater",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Auto-updater, changelog browser, and readme browser for Unipi — checks npm registry, renders CHANGELOG.md and README.md files in TUI overlays",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -34,7 +34,7 @@
34
34
  "access": "public"
35
35
  },
36
36
  "dependencies": {
37
- "@pi-unipi/core": "3.0.0-alpha.27"
37
+ "@pi-unipi/core": "3.0.0-alpha.28"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -35,7 +35,7 @@ pi install npm:@pi-unipi/utility
35
35
  | `/unipi:cleanup` | Lists stale UniPi files, then asks before it removes them. `--dry-run` only lists. `--yes` does not ask. |
36
36
  | `/unipi:doctor` | Checks folders, config files, Node, the model cache, the Decision Model and skill exposure. |
37
37
  | `/unipi:answer [reply\|questions\|web]` | Opens a screen to answer the last agent reply. |
38
- | `/unipi:summarize [focus]` | Asks the agent for a summary of the session. Add text to set a focus. |
38
+ | `/unipi:summarize [focus]` | Re-summarizes the last reply (the `summarize` skill). Any text is passed to the skill as your question. |
39
39
 
40
40
  The skill manager is in [Skill Registry](../skill-registry/README.md) (`/unipi:skills`).
41
41
 
@@ -51,7 +51,8 @@ final reply after work:
51
51
  5. Questions for you. Each question has a type: pick one, pick any or your answer.
52
52
 
53
53
  The agent uses the skill for every final reply, unless you ask for full detail
54
- or raw output. `/unipi:summarize` asks for this summary at any time.
54
+ or raw output. `/unipi:summarize` runs this summary again on the last reply.
55
+ Any text you add goes to the skill as your question.
55
56
 
56
57
  The skill is "must show" by default, so exposure judging does not hide it. To
57
58
  turn this off, open `/unipi:skills` and clear **M** on `summarize`. Clear **E**
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/utility",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Utility commands and tools for Pi coding agent — lifecycle, diagnostics, cache, analytics, display, batch execution",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -36,7 +36,7 @@
36
36
  "access": "public"
37
37
  },
38
38
  "dependencies": {
39
- "@pi-unipi/core": "3.0.0-alpha.27"
39
+ "@pi-unipi/core": "3.0.0-alpha.28"
40
40
  },
41
41
  "devDependencies": {},
42
42
  "peerDependencies": {
@@ -11,8 +11,15 @@ description: |
11
11
 
12
12
  Use this skill for the final reply after work (a task, an investigation, a
13
13
  fix), and when the user runs /unipi:summarize. "The work" below means the
14
- session, or the part of it you are summarizing: the user's messages, your
15
- tool calls and their results, and your replies.
14
+ latest piece of work: the user's last request, the tool calls and results
15
+ that answered it, and your last reply. Use the rest of the session only as
16
+ context to explain it.
17
+
18
+ When the user runs /unipi:summarize, summarize your last reply again in
19
+ this shape. Do not call tools. If text follows this skill, it is the
20
+ user's question or focus. Answer it about your last reply. Words like "it"
21
+ or "this" refer to what your last reply covered. Use earlier parts of the
22
+ session only when the user's text asks about them.
16
23
 
17
24
  ## When not to use it
18
25
 
@@ -17,7 +17,7 @@ description: |
17
17
  | `/unipi:continue` / `/unipi:retry` | Take another turn without new text |
18
18
  | `/unipi:cleanup` | Remove stale UniPi temp files (previews and asks first; `--dry-run`, `--yes`) |
19
19
  | `/unipi:doctor` | Check config, model cache, Decision Model key, skill exposure |
20
- | `/unipi:summarize [focus]` | Ask the agent for a session summary (uses the `summarize` skill) |
20
+ | `/unipi:summarize [focus]` | Summarize the last reply again (runs the `summarize` skill); any text is passed to the skill as the user's question |
21
21
 
22
22
  ## Notes for the agent
23
23
 
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * @pi-unipi/utility — /unipi:summarize [focus]
3
3
  *
4
- * Asks the agent for a summary of the session in the shape the bundled
5
- * `summarize` skill sets. The command sends `/skill:summarize`, so pi
6
- * inlines the skill file into the turn, and the agent cannot skip it.
4
+ * Runs the bundled `summarize` skill again on the last reply. The command
5
+ * sends `/skill:summarize` (plus the user's own text, if any), so pi inlines
6
+ * the skill file into the turn, the agent cannot skip it, and the command
7
+ * adds no wording of its own.
7
8
  */
8
9
 
9
10
  import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
@@ -11,13 +12,10 @@ import { sendHarnessUserMessage, UNIPI_PREFIX, UTILITY_COMMANDS } from "@pi-unip
11
12
 
12
13
  export const SUMMARIZE_SKILL = "summarize";
13
14
 
14
- /** The prompt the command sends. `focus` narrows the summary; empty means the whole session. */
15
+ /** The text the command sends: the skill, plus the user's own text (if any) as-is. */
15
16
  export function summarizePrompt(focus: string): string {
16
17
  const f = focus.trim();
17
- const scope = f
18
- ? `Summarize this session for me, with the focus on: ${f}`
19
- : "Summarize this session for me: what we did, why, and where it stands now.";
20
- return `/skill:${SUMMARIZE_SKILL} ${scope} Use only what happened in this session. Do not call tools.`;
18
+ return f ? `/skill:${SUMMARIZE_SKILL} ${f}` : `/skill:${SUMMARIZE_SKILL}`;
21
19
  }
22
20
 
23
21
  /** True when pi can expand `/skill:summarize` (the skill is loaded and on). */
@@ -45,7 +43,7 @@ export function registerSummarizeCommand(pi: ExtensionAPI): void {
45
43
  sendHarnessUserMessage(
46
44
  pi,
47
45
  summarizePrompt(focus),
48
- { source: "Utility", title: "Summarize", synopsis: focus ? `focus: ${focus}` : "whole session" },
46
+ { source: "Utility", title: "Summarize", synopsis: focus ? `ask: ${focus}` : "last reply" },
49
47
  { expandPromptTemplates: true },
50
48
  );
51
49
  // sendUserMessage does not wait. Print mode (-p) exits when the handler
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/watchdog",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Jev watchdog for long-running tool calls and background tasks — judges stuck work via TypeSafe System One and kills or warns",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -32,8 +32,8 @@
32
32
  "access": "public"
33
33
  },
34
34
  "dependencies": {
35
- "@pi-unipi/background-tasks": "3.0.0-alpha.27",
36
- "@pi-unipi/core": "3.0.0-alpha.27"
35
+ "@pi-unipi/background-tasks": "3.0.0-alpha.28",
36
+ "@pi-unipi/core": "3.0.0-alpha.28"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/web-api",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Web search, read, and summarize tools with provider-based backend selection for Pi coding agent",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -31,7 +31,7 @@
31
31
  "README.md"
32
32
  ],
33
33
  "dependencies": {
34
- "@pi-unipi/core": "3.0.0-alpha.27",
34
+ "@pi-unipi/core": "3.0.0-alpha.28",
35
35
  "defuddle": "^0.18.1",
36
36
  "linkedom": "^0.18.12",
37
37
  "wreq-js": "^2.3.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/workflow",
3
- "version": "3.0.0-alpha.27",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "Plan mode and permission modes for the Pi coding agent",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -27,7 +27,7 @@
27
27
  "access": "public"
28
28
  },
29
29
  "dependencies": {
30
- "@pi-unipi/core": "3.0.0-alpha.27"
30
+ "@pi-unipi/core": "3.0.0-alpha.28"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@earendil-works/pi-ai": "^0.87.1",