@pi-unipi/command-enchantment 2.6.1 → 2.6.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/command-enchantment",
3
- "version": "2.6.1",
3
+ "version": "2.6.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",
@@ -40,7 +40,9 @@
40
40
  "vitest": "^4.1.5"
41
41
  },
42
42
  "pi": {
43
- "extensions": [],
43
+ "extensions": [
44
+ "./src/index.ts"
45
+ ],
44
46
  "skills": [],
45
47
  "prompts": [],
46
48
  "themes": []
package/src/constants.ts CHANGED
@@ -33,8 +33,9 @@ export const PACKAGE_ORDER: string[] = [
33
33
  "footer",
34
34
  "updater",
35
35
  "input-shortcuts",
36
- "cocoindex",
37
36
  "image",
37
+ "subagents",
38
+ "background-tasks",
38
39
  ];
39
40
 
40
41
  // ─── Package Colors ──────────────────────────────────────────────────
@@ -56,8 +57,9 @@ export const PACKAGE_COLORS: Record<string, string> = {
56
57
  footer: `${ESC}[34m`, // Blue
57
58
  updater: `${ESC}[93m`, // Bright Yellow
58
59
  "input-shortcuts": `${ESC}[95m`, // Bright Magenta
59
- cocoindex: `${ESC}[97m`, // Bright White
60
60
  image: `${ESC}[35m`, // Magenta
61
+ subagents: `${ESC}[34m`, // Blue
62
+ "background-tasks": `${ESC}[91m`, // Bright Red
61
63
  };
62
64
 
63
65
  // ─── Command Registry ────────────────────────────────────────────────
@@ -131,6 +133,25 @@ export const COMMAND_REGISTRY: Record<string, string> = {
131
133
  // ask-user (1 command)
132
134
  "unipi:ask-user-settings": "ask-user",
133
135
 
136
+ // subagents (3 commands)
137
+ "unipi:subagents-fleet": "subagents",
138
+ "unipi:subagents-doctor": "subagents",
139
+ "unipi:subagents-guide": "subagents",
140
+
141
+ // background-tasks (8 commands)
142
+ "unipi:bg": "background-tasks",
143
+ "unipi:bg-clear": "background-tasks",
144
+ "unipi:bg-tasks": "background-tasks",
145
+ "unipi:bg-settings": "background-tasks",
146
+ "unipi:bg-update": "background-tasks",
147
+ "unipi:tasks": "background-tasks",
148
+ "unipi:jobs": "background-tasks",
149
+ "unipi:kill": "background-tasks",
150
+ "unipi:logs": "background-tasks",
151
+ "unipi:claude-cache": "background-tasks",
152
+ "unipi:fusion": "background-tasks",
153
+ "unipi:fusion-models": "background-tasks",
154
+
134
155
  // info (2 commands)
135
156
  "unipi:info": "info",
136
157
  "unipi:info-settings": "info",
@@ -151,12 +172,6 @@ export const COMMAND_REGISTRY: Record<string, string> = {
151
172
  "unipi:compact-preset": "compact",
152
173
  "unipi:compact-help": "compact",
153
174
 
154
- // cocoindex (5 commands)
155
- "unipi:cocoindex-update": "cocoindex",
156
- "unipi:cocoindex-status": "cocoindex",
157
- "unipi:cocoindex-init": "cocoindex",
158
- "unipi:cocoindex-search": "cocoindex",
159
- "unipi:cocoindex-settings": "cocoindex",
160
175
 
161
176
  // milestone (2 commands)
162
177
  "unipi:milestone-onboard": "milestone",
@@ -271,12 +286,6 @@ export const COMMAND_DESCRIPTIONS: Record<string, string> = {
271
286
  "unipi:compact-settings": "Configure compaction settings",
272
287
  "unipi:compact-preset": "Manage compaction presets",
273
288
  "unipi:compact-help": "Show compactor command help",
274
- "unipi:cocoindex-update": "Run CocoIndex update to index project",
275
- "unipi:cocoindex-status": "Show CocoIndex indexing status",
276
- "unipi:cocoindex-init": "Initialize CocoIndex pipeline",
277
- "unipi:cocoindex-search": "Search indexed codebase semantically",
278
- "unipi:cocoindex-settings": "Show CocoIndex configuration",
279
-
280
289
  "unipi:notify-settings": "Configure notification platforms and events",
281
290
  "unipi:notify-set-gotify": "Set up Gotify push notifications",
282
291
  "unipi:notify-set-tg": "Set up Telegram bot notifications",
@@ -297,6 +306,22 @@ export const COMMAND_DESCRIPTIONS: Record<string, string> = {
297
306
  "unipi:updater-settings": "Configure updater — check interval and auto-update",
298
307
 
299
308
  "unipi:stash-settings": "Open input shortcuts settings — customize keybindings",
309
+
310
+ "unipi:bg": "Start a shell command as a tracked background task",
311
+ "unipi:bg-clear": "Clear finished background task footer notices",
312
+ "unipi:bg-tasks": "Open the background task manager UI",
313
+ "unipi:bg-settings": "Open background-tasks settings (master toggle, defaults)",
314
+ "unipi:bg-update": "Show installed background-tasks version and update instructions",
315
+ "unipi:tasks": "Open the background task manager UI",
316
+ "unipi:jobs": "List running and recent background tasks",
317
+ "unipi:kill": "Stop a running background task: /unipi:kill <id>",
318
+ "unipi:logs": "Show bounded output from a background task",
319
+ "unipi:claude-cache": "Show or set Claude cache retention for this session",
320
+ "unipi:fusion": "Run the Fusion reason workflow with a prompt",
321
+ "unipi:fusion-models": "Open the Fusion five-slot model selector",
322
+ "unipi:subagents-fleet": "Open the subagents fleet view",
323
+ "unipi:subagents-doctor": "Diagnose subagents configuration",
324
+ "unipi:subagents-guide": "Show the subagents usage guide",
300
325
  };
301
326
 
302
327
  // ─── Package Display Names ───────────────────────────────────────────
@@ -318,6 +343,7 @@ export const PACKAGE_LABELS: Record<string, string> = {
318
343
  footer: "footer",
319
344
  updater: "updater",
320
345
  "input-shortcuts": "input-shortcuts",
321
- cocoindex: "cocoindex",
322
346
  image: "image",
347
+ subagents: "subagents",
348
+ "background-tasks": "background-tasks",
323
349
  };
package/src/provider.ts CHANGED
@@ -11,7 +11,7 @@ import type {
11
11
  AutocompleteProvider,
12
12
  AutocompleteSuggestions,
13
13
  } from "@earendil-works/pi-tui";
14
- import { fuzzyFilter } from "@earendil-works/pi-tui";
14
+ import { fuzzyMatch as piFuzzyMatch } from "@earendil-works/pi-tui";
15
15
 
16
16
  import {
17
17
  COMMAND_REGISTRY,
@@ -27,20 +27,6 @@ import {
27
27
  } from "./sorting.js";
28
28
  import type { TaggedItem } from "./sorting.js";
29
29
 
30
- // ─── Fuzzy matching ──────────────────────────────────────────────────
31
-
32
- /** Simple character-subsequence fuzzy match (case-insensitive) */
33
- function fuzzyMatch(text: string, query: string): boolean {
34
- if (!query) return true;
35
- const lower = text.toLowerCase();
36
- const q = query.toLowerCase();
37
- let qi = 0;
38
- for (let i = 0; i < lower.length && qi < q.length; i++) {
39
- if (lower[i] === q[qi]) qi++;
40
- }
41
- return qi === q.length;
42
- }
43
-
44
30
  // ─── Namespace detection ─────────────────────────────────────────────
45
31
 
46
32
  /**
@@ -131,9 +117,9 @@ function getEnhancedUnipiItems(
131
117
  // commands surface when the user hasn't typed the full prefix.
132
118
  matched = entries.filter(([cmd]) => {
133
119
  if (isPastUnipiColon) {
134
- return fuzzyMatch(cmd.replace("unipi:", "").toLowerCase(), query);
120
+ return piFuzzyMatch(query, cmd.replace("unipi:", "").toLowerCase()).matches;
135
121
  }
136
- return fuzzyMatch(cmd.toLowerCase(), query);
122
+ return piFuzzyMatch(query, cmd.toLowerCase()).matches;
137
123
  });
138
124
  }
139
125