@pi-unipi/unipi 2.10.0 → 2.10.2

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,26 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.10.2] — 2026-08-25
10
+
11
+ Follow-up to 2.10.1: the 2.10.1 tarballs shipped with `@pi-unipi/*` cross-dependency pins still pointing at `2.10.0`, so installing `@pi-unipi/unipi@2.10.1` resolved the old `@pi-unipi/trajectory@2.10.0` (without the auto-completion fix) instead of `2.10.1`. This release re-synchronizes every cross-pin to `2.10.2` and republishes the full synchronized set.
12
+
13
+ ### Fixed
14
+
15
+ - Resynced every `@pi-unipi/*` dependency pin (root umbrella + all workspace cross-deps) to the matching published version so npm links the workspace set instead of pulling nested stale registry copies. Without this, `@pi-unipi/unipi@2.10.1` pulled `@pi-unipi/trajectory@2.10.0` and the argument auto-completion fix never reached umbrella installers.
16
+
17
+ ## [2.10.1] — 2026-08-25
18
+
19
+ Patch release: `/unipi:trajectory` now registers argument auto-completion so users discover its `stop`, `off`, and `toggle` options inline instead of having to read the docs.
20
+
21
+ ### Fixed
22
+
23
+ - `trajectory`: `/unipi:trajectory` registered its command with only a `description` and `handler`, so the TUI never offered argument completions and users had no way to learn that `stop`/`off`/`toggle` (or running it bare to open the server) existed. Added `getArgumentCompletions` to the registered command, returning `stop`, `off`, `toggle`, and a `(no argument)` hint that opens/reuses the server — matching the action set the handler already accepts.
24
+
25
+ ### Changed
26
+
27
+ - All `@pi-unipi/*` packages and the umbrella re-versioned to `2.10.1` so npm installs keep a single synchronized workspace set and avoid nested stale package copies.
28
+
9
29
  ## [2.10.0] — 2026-08-25
10
30
 
11
31
  This release adds UniPi Trajectory, a localhost-only live inspector for the current Pi session, with durable redacted sidecar telemetry for exact request/tool timings and provider metadata.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/unipi",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "All-in-one extension suite for Pi coding agent",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -82,28 +82,28 @@
82
82
  "typebox": "^1.1.38"
83
83
  },
84
84
  "dependencies": {
85
- "@pi-unipi/ask-user": "2.10.0",
86
- "@pi-unipi/background-tasks": "2.10.0",
87
- "@pi-unipi/btw": "2.10.0",
88
- "@pi-unipi/command-enchantment": "2.10.0",
89
- "@pi-unipi/compactor": "2.10.0",
90
- "@pi-unipi/core": "2.10.0",
91
- "@pi-unipi/footer": "2.10.0",
92
- "@pi-unipi/image": "2.10.0",
93
- "@pi-unipi/info-screen": "2.10.0",
94
- "@pi-unipi/input-shortcuts": "2.10.0",
95
- "@pi-unipi/kanboard": "2.10.0",
96
- "@pi-unipi/mcp": "2.10.0",
97
- "@pi-unipi/memory": "2.10.0",
98
- "@pi-unipi/milestone": "2.10.0",
99
- "@pi-unipi/notify": "2.10.0",
100
- "@pi-unipi/ralph": "2.10.0",
101
- "@pi-unipi/subagents": "2.10.0",
102
- "@pi-unipi/trajectory": "2.10.0",
103
- "@pi-unipi/updater": "2.10.0",
104
- "@pi-unipi/utility": "2.10.0",
105
- "@pi-unipi/web-api": "2.10.0",
106
- "@pi-unipi/workflow": "2.10.0"
85
+ "@pi-unipi/ask-user": "2.10.2",
86
+ "@pi-unipi/background-tasks": "2.10.2",
87
+ "@pi-unipi/btw": "2.10.2",
88
+ "@pi-unipi/command-enchantment": "2.10.2",
89
+ "@pi-unipi/compactor": "2.10.2",
90
+ "@pi-unipi/core": "2.10.2",
91
+ "@pi-unipi/footer": "2.10.2",
92
+ "@pi-unipi/image": "2.10.2",
93
+ "@pi-unipi/info-screen": "2.10.2",
94
+ "@pi-unipi/input-shortcuts": "2.10.2",
95
+ "@pi-unipi/kanboard": "2.10.2",
96
+ "@pi-unipi/mcp": "2.10.2",
97
+ "@pi-unipi/memory": "2.10.2",
98
+ "@pi-unipi/milestone": "2.10.2",
99
+ "@pi-unipi/notify": "2.10.2",
100
+ "@pi-unipi/ralph": "2.10.2",
101
+ "@pi-unipi/subagents": "2.10.2",
102
+ "@pi-unipi/trajectory": "2.10.2",
103
+ "@pi-unipi/updater": "2.10.2",
104
+ "@pi-unipi/utility": "2.10.2",
105
+ "@pi-unipi/web-api": "2.10.2",
106
+ "@pi-unipi/workflow": "2.10.2"
107
107
  },
108
108
  "devDependencies": {
109
109
  "@earendil-works/pi-agent-core": "^0.84.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/ask-user",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
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": "2.10.0"
43
+ "@pi-unipi/core": "2.10.2"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "@earendil-works/pi-coding-agent": "^0.84.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/command-enchantment",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
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",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/background-tasks",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Background tasks for UniPi — durable shell jobs, delegated agents, attested Pi runs, and fixed-purpose Fusion workflows",
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.84.0",
13
- "@pi-unipi/core": "2.10.0",
13
+ "@pi-unipi/core": "2.10.2",
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": "2.10.0",
3
+ "version": "2.10.2",
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.84.0"
38
38
  },
39
39
  "dependencies": {
40
- "@pi-unipi/core": "2.10.0"
40
+ "@pi-unipi/core": "2.10.2"
41
41
  },
42
42
  "pi": {
43
43
  "extensions": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/compactor",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Context engine for Pi — zero-LLM compaction, session continuity, sandbox execution, and tool display optimization",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -34,8 +34,8 @@
34
34
  "access": "public"
35
35
  },
36
36
  "dependencies": {
37
- "@pi-unipi/core": "2.10.0",
38
- "@pi-unipi/info-screen": "2.10.0",
37
+ "@pi-unipi/core": "2.10.2",
38
+ "@pi-unipi/info-screen": "2.10.2",
39
39
  "@earendil-works/pi-agent-core": "^0.84.0"
40
40
  },
41
41
  "peerDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/core",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
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": "2.10.0",
3
+ "version": "2.10.2",
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,7 +32,7 @@
32
32
  "access": "public"
33
33
  },
34
34
  "dependencies": {
35
- "@pi-unipi/core": "2.10.0"
35
+ "@pi-unipi/core": "2.10.2"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "@earendil-works/pi-coding-agent": "^0.84.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/image",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Image generation and image recognition tools for the Pi coding agent",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -34,7 +34,7 @@
34
34
  "access": "public"
35
35
  },
36
36
  "dependencies": {
37
- "@pi-unipi/core": "2.10.0"
37
+ "@pi-unipi/core": "2.10.2"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "@earendil-works/pi-ai": "^0.84.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/info-screen",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Dashboard and module registry for Unipi — configurable info overlay with tabbed groups",
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": "2.10.0"
36
+ "@pi-unipi/core": "2.10.2"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@earendil-works/pi-coding-agent": "^0.84.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/input-shortcuts",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
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": "2.10.0"
36
+ "@pi-unipi/core": "2.10.2"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@earendil-works/pi-coding-agent": "^0.84.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/kanboard",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Visualization layer for unipi workflow — HTTP server with htmx/Alpine.js UI, modular parsers, TUI overlay, and kanban board",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -39,7 +39,7 @@
39
39
  "access": "public"
40
40
  },
41
41
  "dependencies": {
42
- "@pi-unipi/core": "2.10.0"
42
+ "@pi-unipi/core": "2.10.2"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "@earendil-works/pi-coding-agent": "^0.84.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/mcp",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
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": "2.10.0"
33
+ "@pi-unipi/core": "2.10.2"
34
34
  },
35
35
  "peerDependencies": {
36
36
  "@earendil-works/pi-coding-agent": "^0.84.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/memory",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Persistent cross-session memory with MemPalace backend (auto-installed) and SQLite fallback for Pi coding agent",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -39,8 +39,8 @@
39
39
  "README.md"
40
40
  ],
41
41
  "dependencies": {
42
- "@pi-unipi/core": "2.10.0",
43
- "@pi-unipi/info-screen": "2.10.0",
42
+ "@pi-unipi/core": "2.10.2",
43
+ "@pi-unipi/info-screen": "2.10.2",
44
44
  "js-yaml": "^4.1.0"
45
45
  },
46
46
  "peerDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/milestone",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Lifecycle layer for project-level goals — MILESTONES.md tracking, session hooks, auto-sync",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -32,7 +32,7 @@
32
32
  "access": "public"
33
33
  },
34
34
  "dependencies": {
35
- "@pi-unipi/core": "2.10.0"
35
+ "@pi-unipi/core": "2.10.2"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "@earendil-works/pi-coding-agent": "^0.84.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/notify",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
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": "2.10.0",
37
+ "@pi-unipi/core": "2.10.2",
38
38
  "node-notifier": "^10.0.1"
39
39
  },
40
40
  "peerDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/ralph",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Long-running iterative development loops for Pi coding agent",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -31,8 +31,8 @@
31
31
  "test": "npx tsx --test reminder.test.ts"
32
32
  },
33
33
  "dependencies": {
34
- "@pi-unipi/core": "2.10.0",
35
- "@pi-unipi/info-screen": "2.10.0"
34
+ "@pi-unipi/core": "2.10.2",
35
+ "@pi-unipi/info-screen": "2.10.2"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "@earendil-works/pi-ai": "^0.84.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/subagents",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Subagents for UniPi — parallel execution, file locking, workflow integration",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -9,7 +9,7 @@
9
9
  "test": "npx tsx --test src/__tests__/*.test.ts"
10
10
  },
11
11
  "dependencies": {
12
- "@pi-unipi/core": "2.10.0",
12
+ "@pi-unipi/core": "2.10.2",
13
13
  "@earendil-works/pi-agent-core": "^0.84.0",
14
14
  "acorn": "8.18.0"
15
15
  },
@@ -11,6 +11,10 @@ Live, localhost-only UniPi trajectory inspector for the current Pi session.
11
11
  /unipi:trajectory toggle # open when stopped, stop when running
12
12
  ```
13
13
 
14
+ Typing `/unipi:trajectory` followed by a space auto-completes the available
15
+ actions (`stop`, `off`, `toggle`), so the options are discoverable without
16
+ reading the docs. Running it with no argument opens or reuses the server.
17
+
14
18
  The command starts or reuses an in-process server on `127.0.0.1:8176-8186` and opens it in the default browser. The page follows the active session every 500 ms. The server is owned by the current Pi process and is stopped on any Pi session shutdown/reload/resume/new/fork event.
15
19
 
16
20
  ## What it shows
@@ -18,6 +18,28 @@ export default function trajectory(pi: ExtensionAPI): void {
18
18
 
19
19
  pi.registerCommand("unipi:trajectory", {
20
20
  description: "Open or manage UniPi's live trajectory for the current session",
21
+ getArgumentCompletions: (argumentPrefix: string) => {
22
+ const prefix = argumentPrefix.trim().toLowerCase();
23
+ const actions = [
24
+ { value: "stop", label: "stop", description: "Stop this session's trajectory server" },
25
+ { value: "off", label: "off", description: "Alias of stop" },
26
+ { value: "toggle", label: "toggle", description: "Open when stopped, stop when running" },
27
+ ];
28
+ const matches = prefix
29
+ ? actions.filter((a) => a.value.startsWith(prefix) || a.label.startsWith(prefix))
30
+ : actions;
31
+ // With no prefix (or a matching one) also surface a hint that running bare
32
+ // opens/reuses the server, so users learn the default behavior exists.
33
+ const items = matches.map((a) => ({ value: a.value, label: a.label, description: a.description }));
34
+ if (!prefix) {
35
+ items.unshift({
36
+ value: "",
37
+ label: "(no argument)",
38
+ description: "Open or reuse the trajectory server in the browser",
39
+ });
40
+ }
41
+ return items;
42
+ },
21
43
  handler: async (args, ctx) => {
22
44
  const action = String(args ?? "").trim().toLowerCase();
23
45
  const wantsStop = ["stop", "off", "--stop", "--off"].includes(action);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/trajectory",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Live UniPi trajectory inspector for Pi sessions",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -58672,6 +58672,24 @@ function trajectory(pi) {
58672
58672
  const readTelemetry = registerTelemetryCapture(pi);
58673
58673
  pi.registerCommand("unipi:trajectory", {
58674
58674
  description: "Open or manage UniPi's live trajectory for the current session",
58675
+ getArgumentCompletions: (argumentPrefix) => {
58676
+ const prefix = argumentPrefix.trim().toLowerCase();
58677
+ const actions = [
58678
+ { value: "stop", label: "stop", description: "Stop this session's trajectory server" },
58679
+ { value: "off", label: "off", description: "Alias of stop" },
58680
+ { value: "toggle", label: "toggle", description: "Open when stopped, stop when running" }
58681
+ ];
58682
+ const matches = prefix ? actions.filter((a) => a.value.startsWith(prefix) || a.label.startsWith(prefix)) : actions;
58683
+ const items = matches.map((a) => ({ value: a.value, label: a.label, description: a.description }));
58684
+ if (!prefix) {
58685
+ items.unshift({
58686
+ value: "",
58687
+ label: "(no argument)",
58688
+ description: "Open or reuse the trajectory server in the browser"
58689
+ });
58690
+ }
58691
+ return items;
58692
+ },
58675
58693
  handler: async (args, ctx) => {
58676
58694
  const action = String(args ?? "").trim().toLowerCase();
58677
58695
  const wantsStop = ["stop", "off", "--stop", "--off"].includes(action);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/updater",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
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": "2.10.0"
37
+ "@pi-unipi/core": "2.10.2"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "@earendil-works/pi-coding-agent": "^0.84.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/utility",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
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": "2.10.0"
39
+ "@pi-unipi/core": "2.10.2"
40
40
  },
41
41
  "devDependencies": {},
42
42
  "peerDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/web-api",
3
- "version": "2.10.0",
3
+ "version": "2.10.2",
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": "2.10.0",
34
+ "@pi-unipi/core": "2.10.2",
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": "2.10.0",
3
+ "version": "2.10.2",
4
4
  "description": "Structured development workflow commands for Pi coding agent",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -30,7 +30,7 @@
30
30
  "access": "public"
31
31
  },
32
32
  "dependencies": {
33
- "@pi-unipi/core": "2.10.0"
33
+ "@pi-unipi/core": "2.10.2"
34
34
  },
35
35
  "peerDependencies": {
36
36
  "@earendil-works/pi-ai": "^0.84.0",