@pify/cli 0.4.0 → 0.4.1

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.
Files changed (3) hide show
  1. package/README.md +37 -22
  2. package/catalog.json +31 -15
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # @pify/cli
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/@pify/cli)](https://www.npmjs.com/package/@pify/cli) [![npm downloads](https://img.shields.io/npm/dm/@pify/cli)](https://www.npmjs.com/package/@pify/cli)
4
+
3
5
  Front door for the [Pify](https://github.com/pifydev) suite: install and update the [pi coding agent](https://github.com/earendil-works/pi), manage the `@pify/*` extension packages with short names, and scaffold new Pi Packages.
4
6
 
5
7
  > Not to be confused with the unscoped npm package `pify` (sindresorhus's promisify library) — unrelated.
@@ -20,16 +22,16 @@ npx @pify/cli setup
20
22
 
21
23
  ```
22
24
  pify setup # install the pi coding agent (safe to re-run)
23
- pify setup --pi-version 0.84.4 # pin the version your team has tested
25
+ pify setup --pi-version 0.85.1 # pin the version your team has tested
24
26
  pify setup --installer # run pi's official interactive installer (ps1/sh)
25
27
  pify list # show the @pify catalog with install state
26
28
  pify install goal task # short names resolve to @pify/goal, @pify/task
27
29
  pify install suite # the whole suite in one go (also: core, agents)
28
30
  pify install goal -l -a # project scope, pre-approved (CI-friendly)
29
31
  pify remove goal
30
- pify update --check # what is out of date, changing nothing (v0.4)
32
+ pify update --check # what is out of date, changing nothing
31
33
  pify update # update pi + every installed @pify package
32
- pify profile save # write the installed suite + versions to a file (v0.4)
34
+ pify profile save # write the installed suite + versions to a file
33
35
  pify profile apply f.json # diff it against this machine; --yes to apply
34
36
  pify update pi # agent only
35
37
  pify doctor # diagnose node / npm / pi / settings
@@ -66,20 +68,33 @@ pify completions powershell | Out-String | Invoke-Expression # add to $PROFILE
66
68
  | `@pify/goal` | Pin a session goal and keep the agent anchored to it |
67
69
  | `@pify/memory` | Persistent memory across pi sessions |
68
70
  | `@pify/plan-mode` | Read-only planning mode with approve-then-execute gate |
69
- | `@pify/pretty` | Prettier TUI rendering for tool calls, diffs, markdown |
71
+ | `@pify/pretty` | Compact, theme-aware rendering for pi's built-in tools |
72
+ | `@pify/search` | Fuzzy file finding and indexed content search: `fffind` and `ffgrep` |
73
+ | `@pify/skills` | See what skills are loaded, what they cost per request, and which ones ever fire |
70
74
  | `@pify/subagent` | Spawn scoped subagents, including by `@agent` mention |
71
75
  | `@pify/swarm` | Coordinate multiple pi agents working in parallel |
72
76
  | `@pify/task` | Task tracking: dependency graph, evidence-gated completion, reminders |
73
- | `@pify/todo` | Agent working-memory checklist: TodoWrite-style, next-item surfacing |
77
+ | `@pify/todo` | Agent working-memory checklist with next-item surfacing |
74
78
  | `@pify/usage` | Token and cost reporting, plus what is filling the context window |
75
- | `@pify/workflow` | Deterministic agent orchestration: CC-style workflow scripts |
76
- | `@pify/worktree` | Safe git-worktree management with safety rails and merge-back |
79
+ | `@pify/workflow` | Deterministic agent orchestration through JavaScript workflow scripts |
80
+ | `@pify/worktree` | Safe git-worktree management, with `/worktree enter` to take the session along |
77
81
  | `@pify/yolo` | A safety gradient from auto-approve to ask-about-anything, with an undo trail |
78
82
 
79
83
  The catalog ships inside the CLI and refreshes (at most daily) from [`catalog.json` on `main`](https://github.com/pifydev/cli/blob/main/catalog.json), so newly published packages appear without a CLI update. A fetched catalog is validated before use — every entry must stay inside the `@pify` scope — and any invalid document is discarded entirely. Overrides: `PIFY_CATALOG_URL` (remote URL), `PIFY_OFFLINE=1` or `PI_OFFLINE=1` (skip all network lookups).
80
84
 
81
85
  Explicit `@pify/<name>` arguments bypass the catalog's published/planned gate (with a warning), so a freshly published package is installable before the catalog propagates.
82
86
 
87
+ ## Environment
88
+
89
+ | Variable | Effect |
90
+ |---|---|
91
+ | `PIFY_CATALOG_URL` | Fetch the catalog from somewhere other than the org's `main` |
92
+ | `PIFY_OFFLINE=1` / `PI_OFFLINE=1` | Skip every network lookup |
93
+ | `PIFY_TRUST_PROJECT=1` | Approve project-supplied config for the suite's extensions in a headless run |
94
+ | `NO_COLOR` / `FORCE_COLOR` | Colour, as usual |
95
+
96
+ `PIFY_TRUST_PROJECT` is read by the extensions rather than by this CLI, and it matters in CI. Several packages load files a repository ships — `@pify/memory`'s `.pi/memory/MEMORY.md`, `@pify/subagent`'s `.pi/agents/*.md`, `@pify/yolo`'s `.pi/yolo.json` — and each asks once before doing so, because pi's own trust prompt does not cover files pi itself does not load. With no UI to ask through, the answer is no. Set this to `1` where you have decided the checkout is trustworthy. It is an environment variable rather than a config file precisely because the repository being read cannot set one for itself.
97
+
83
98
  ## Exit codes
84
99
 
85
100
  | Code | Meaning |
@@ -93,18 +108,7 @@ Explicit `@pify/<name>` arguments bypass the catalog's published/planned gate (w
93
108
 
94
109
  Colored output respects `NO_COLOR`, `FORCE_COLOR`, `--no-color`, and non-TTY pipes. Results go to stdout; warnings and errors go to stderr. No interactive prompts anywhere — behavior is identical in TTY and CI except color.
95
110
 
96
- ## Development
97
-
98
- ```bash
99
- npm install
100
- npm run build # tsup -> dist/
101
- npm test # builds first, then node --test
102
- npm run typecheck
103
- ```
104
-
105
- Requires Node >= 22.19.0 (same floor as the pi coding agent). Tested with pi 0.84.4.
106
-
107
- ## Profiles (v0.4)
111
+ ## Profiles
108
112
 
109
113
  The suite you actually run, written down — which packages, at which versions, in which scope — so a second machine can reproduce it:
110
114
 
@@ -122,9 +126,9 @@ Applying always shows the difference first:
122
126
  install swarm (latest)
123
127
  ```
124
128
 
125
- A package installed here but absent from the profile is reported as `extra` and **never removed**: a profile says what must be present, not what must be deleted. Every name still goes through the same catalog resolution as a typed install, so a profile file cannot reach outside the `@pify` scope. (Profiles, and the rule that applying passes through a review, are from [`pi-extmgr`](https://github.com/ayagmar/pi-extmgr); what this drops is the interactive screen — a CLI's review is a diff and an explicit flag.)
129
+ A package installed here but absent from the profile is reported as `extra` and **never removed**: a profile says what must be present, not what must be deleted. Every name still goes through the same catalog resolution as a typed install, so a profile file cannot reach outside the `@pify` scope. A CLI's review is a diff and an explicit flag rather than an interactive screen, so the same command works the same way in a script.
126
130
 
127
- ## Conflict detection (v0.4)
131
+ ## Conflict detection
128
132
 
129
133
  Some extensions cannot run beside each other: they register the same command, tool, or flag, so pi loads both and one silently wins — and which one is not something you chose. `pify doctor` now reads pi's whole package list and says so:
130
134
 
@@ -132,7 +136,18 @@ Some extensions cannot run beside each other: they register the same command, to
132
136
  warn conflicts @pify/memory + pi-memory; @pify/pretty + pi-pretty-tui register the same commands or tools - remove one
133
137
  ```
134
138
 
135
- The pairs come from the catalog, where each is taken from the package's own README. (pi-extmgr detects this at runtime through `pi.getCommands()`, which a CLI outside pi cannot call; this is the static equivalent.)
139
+ The pairs come from the catalog, where each is taken from the package's own README. Detecting this properly would mean asking a running pi which commands are registered, which a CLI outside pi cannot do — so this is the static equivalent, and it is only as complete as the catalog.
140
+
141
+ ## Development
142
+
143
+ ```bash
144
+ npm install
145
+ npm run build # tsup -> dist/
146
+ npm test # builds first, then node --test
147
+ npm run typecheck
148
+ ```
149
+
150
+ Requires Node >= 22.19.0 — the same floor as the pi coding agent.
136
151
 
137
152
  ## License
138
153
 
package/catalog.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": 18,
2
+ "version": 24,
3
3
  "org": "pifydev",
4
4
  "scope": "@pify",
5
5
  "remote": "https://raw.githubusercontent.com/pifydev/cli/main/catalog.json",
@@ -8,28 +8,28 @@
8
8
  "name": "ask-question",
9
9
  "npm": "@pify/ask-question",
10
10
  "repo": "https://github.com/pifydev/ask-question",
11
- "description": "CC AskUserQuestion-shaped tool on built-in dialogs: 1-4 questions, multi-select, Other free-text, /ask history",
11
+ "description": "Structured questions on built-in dialogs: 1-4 questions, options with trade-offs, multi-select, Other free-text",
12
12
  "status": "published"
13
13
  },
14
14
  {
15
15
  "name": "btw",
16
16
  "npm": "@pify/btw",
17
17
  "repo": "https://github.com/pifydev/btw",
18
- "description": "By-the-way side conversations: a read-only, codebase-aware side agent in a widget",
18
+ "description": "By-the-way side conversations: a read-only, codebase-aware side agent in a widget, out of the main context",
19
19
  "status": "published"
20
20
  },
21
21
  {
22
22
  "name": "goal",
23
23
  "npm": "@pify/goal",
24
24
  "repo": "https://github.com/pifydev/goal",
25
- "description": "Pin a session goal and keep the agent anchored: ordered steps, safety limits, evidence-gated completion with an optional independent audit",
25
+ "description": "Pin a session goal and keep the agent anchored: ordered steps, evidence-gated completion, cost-weighted budget",
26
26
  "status": "published"
27
27
  },
28
28
  {
29
29
  "name": "memory",
30
30
  "npm": "@pify/memory",
31
31
  "repo": "https://github.com/pifydev/memory",
32
- "description": "Persistent memory across sessions: two-tier markdown, FTS5 search, secret-scanned writes, opt-in LLM consolidation",
32
+ "description": "Persistent memory across sessions: two-tier markdown, FTS5 search, secret-scanned writes, consent-gated project tier",
33
33
  "status": "published",
34
34
  "conflicts": [
35
35
  "pi-memory"
@@ -39,7 +39,7 @@
39
39
  "name": "plan-mode",
40
40
  "npm": "@pify/plan-mode",
41
41
  "repo": "https://github.com/pifydev/plan-mode",
42
- "description": "Read-only planning with an approve-then-execute gate: enforced tool policy, tracked plan steps, saved-plan library, HTML export",
42
+ "description": "Read-only planning with an approve-then-execute gate: enforced tool policy, tracked steps, plans as files",
43
43
  "status": "published",
44
44
  "conflicts": [
45
45
  "@narumitw/pi-plan-mode"
@@ -49,7 +49,7 @@
49
49
  "name": "pretty",
50
50
  "npm": "@pify/pretty",
51
51
  "repo": "https://github.com/pifydev/pretty",
52
- "description": "Compact theme-aware rendering for built-in tools: summaries, highlighted reads, colorized diffs, configurable caps",
52
+ "description": "Compact theme-aware rendering for built-in tools: summaries, highlighted reads, word-level diff emphasis",
53
53
  "status": "published",
54
54
  "conflicts": [
55
55
  "pi-pretty",
@@ -57,60 +57,74 @@
57
57
  "pi-tool-display"
58
58
  ]
59
59
  },
60
+ {
61
+ "name": "search",
62
+ "npm": "@pify/search",
63
+ "repo": "https://github.com/pifydev/search",
64
+ "description": "Fuzzy file finding and indexed content search: fffind and ffgrep, with a pure-TypeScript fallback",
65
+ "status": "published"
66
+ },
67
+ {
68
+ "name": "skills",
69
+ "npm": "@pify/skills",
70
+ "repo": "https://github.com/pifydev/skills",
71
+ "description": "See the skills pi has loaded, what they cost in every request, and which ones ever fire",
72
+ "status": "published"
73
+ },
60
74
  {
61
75
  "name": "subagent",
62
76
  "npm": "@pify/subagent",
63
77
  "repo": "https://github.com/pifydev/subagent",
64
- "description": "Spawn scoped subagents: agent_run/agent_result, @agent mentions, custom agent types, turn caps and tool allowlists",
78
+ "description": "Spawn scoped subagents: agent_run/agent_result, @agent mentions, custom agent types, ask_supervisor, results delivered not polled",
65
79
  "status": "published"
66
80
  },
67
81
  {
68
82
  "name": "swarm",
69
83
  "npm": "@pify/swarm",
70
84
  "repo": "https://github.com/pifydev/swarm",
71
- "description": "Coordinate multiple pi agents in parallel: fan-out with auto-routing, concurrency queue, aggregated reports",
85
+ "description": "Run many pi agents in parallel: fan-out with per-item routing, concurrency queue, shared mailbox, results delivered not polled",
72
86
  "status": "published"
73
87
  },
74
88
  {
75
89
  "name": "task",
76
90
  "npm": "@pify/task",
77
91
  "repo": "https://github.com/pifydev/task",
78
- "description": "Task tracking with dependency graph, evidence-gated completion, live widget, CC-style reminders",
92
+ "description": "Task tracking with a dependency graph, evidence-gated completion, live widget, and a sweep when the list finishes",
79
93
  "status": "published"
80
94
  },
81
95
  {
82
96
  "name": "todo",
83
97
  "npm": "@pify/todo",
84
98
  "repo": "https://github.com/pifydev/todo",
85
- "description": "Agent working-memory checklist: CC TodoWrite-style complete-replacement, next-item surfacing, live widget",
99
+ "description": "Agent working-memory checklist: complete-replacement writes, next-item surfacing, live widget",
86
100
  "status": "published"
87
101
  },
88
102
  {
89
103
  "name": "usage",
90
104
  "npm": "@pify/usage",
91
105
  "repo": "https://github.com/pifydev/usage",
92
- "description": "Token and cost reporting: live footer, local-history dashboard with per-project costs, and /usage context showing what fills the window",
106
+ "description": "Token and cost reporting: live footer, local-history dashboard with per-project totals, context breakdown",
93
107
  "status": "published"
94
108
  },
95
109
  {
96
110
  "name": "workflow",
97
111
  "npm": "@pify/workflow",
98
112
  "repo": "https://github.com/pifydev/workflow",
99
- "description": "Deterministic agent orchestration: CC-style scripts with agent()/parallel()/pipeline(), schema-validated results, gates, and resume",
113
+ "description": "Deterministic agent orchestration through JavaScript scripts: agent()/parallel()/pipeline(), gates, resume",
100
114
  "status": "published"
101
115
  },
102
116
  {
103
117
  "name": "worktree",
104
118
  "npm": "@pify/worktree",
105
119
  "repo": "https://github.com/pifydev/worktree",
106
- "description": "Safe git-worktree management: create/list/merge/remove with safety rails, no shell interpolation",
120
+ "description": "Safe git-worktree management: create/list/merge/remove with safety rails, plus /worktree enter to take the session along",
107
121
  "status": "published"
108
122
  },
109
123
  {
110
124
  "name": "yolo",
111
125
  "npm": "@pify/yolo",
112
126
  "repo": "https://github.com/pifydev/yolo",
113
- "description": "A safety gradient from auto-approve-everything to ask-about-anything: four modes, secret-file gate, undo trail with git checkpoints",
127
+ "description": "A safety gradient from auto-approve-everything to ask-about-anything: four modes, read-before-write, undo trail, rewind to before a prompt",
114
128
  "status": "published"
115
129
  }
116
130
  ],
@@ -125,6 +139,8 @@
125
139
  "memory",
126
140
  "plan-mode",
127
141
  "pretty",
142
+ "search",
143
+ "skills",
128
144
  "subagent",
129
145
  "swarm",
130
146
  "task",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pify/cli",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Front door for the Pify suite: install and update the pi coding agent, manage @pify packages, and scaffold Pi Packages",
5
5
  "keywords": [
6
6
  "pify",