@tommy-ca/lazypi 0.8.1 → 0.10.0
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 +20 -8
- package/bin/lazypi.mjs +22 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ LazyPi will:
|
|
|
13
13
|
1. Install `pi` for you if it isn't installed yet.
|
|
14
14
|
2. Ask if you want to install all the packages or choose which to install.
|
|
15
15
|
|
|
16
|
-
That setup is the harness core — isolated sub-agents, a structured ask gate, skill visibility, $ skill mention, a long-objective gate, side chat, context budgeting, code simplification review, web research, FFF search, a workflow engine for sub-agent fan-out, and ponytail discipline review.
|
|
16
|
+
That setup is the harness core — isolated sub-agents, a structured ask gate, skill visibility, $ skill mention, a long-objective gate, side chat, context budgeting, code simplification review, web research, FFF search, a workflow engine for sub-agent fan-out, and ponytail discipline review. A five-package optional tier (targeted LSP diagnostics, interactive shell overlays, autonomous research loops, structured todo tracking, markdown-backed memory) installs on request with `--only optional`. Other extras (skill arguments, memory, MCP, themes) install on demand with `pi install`.
|
|
17
17
|
|
|
18
18
|
That's it. Once done - run `pi` and experience a feature rich coding agent experience.
|
|
19
19
|
|
|
@@ -84,13 +84,25 @@ Shared nav and footer are in `docs/_includes/`. Layouts are in `docs/_layouts/`.
|
|
|
84
84
|
|
|
85
85
|
## Releasing
|
|
86
86
|
|
|
87
|
-
LazyPi
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
-
|
|
93
|
-
|
|
87
|
+
LazyPi ships from `master` with a manual, gate-checked release flow:
|
|
88
|
+
|
|
89
|
+
- Run the gates: `npm test` and `npm run spec:validate`
|
|
90
|
+
- Bump: `npm version <semver> --no-git-tag-version`, commit `<semver>`,
|
|
91
|
+
tag `v<semver>`, push commit and tag
|
|
92
|
+
- Publish interactively (`npm publish --access public`) — the npm account
|
|
93
|
+
enforces 2FA, so publish needs a TTY for the OTP or device-auth flow.
|
|
94
|
+
If publish 404s on the scoped package, the stored token has expired:
|
|
95
|
+
clear it and `npm login` again (npm masks invalid tokens as 404)
|
|
96
|
+
- Create the GitHub release for the tag
|
|
97
|
+
- Validate the published artifact from a neutral directory (outside the
|
|
98
|
+
checkout): `npx -y @tommy-ca/lazypi@<version> --version` and
|
|
99
|
+
`bunx @tommy-ca/lazypi@<version> --version` must both report the
|
|
100
|
+
released version, then `status`/`install --yes` must be idempotent.
|
|
101
|
+
|
|
102
|
+
The repo also carries a release-please workflow intended for CI trusted
|
|
103
|
+
publishing, but it is **not provisioned** (no `NPM_TOKEN` secret), so it
|
|
104
|
+
is not the current publish path. Wire the secret and test the workflow
|
|
105
|
+
before treating releases as automated.
|
|
94
106
|
|
|
95
107
|
---
|
|
96
108
|
|
package/bin/lazypi.mjs
CHANGED
|
@@ -20,10 +20,11 @@ import {
|
|
|
20
20
|
// ---------------------------------------------------------------------------
|
|
21
21
|
// Catalog
|
|
22
22
|
// ---------------------------------------------------------------------------
|
|
23
|
-
// Categories. LazyPi installs
|
|
24
|
-
// the
|
|
25
|
-
//
|
|
26
|
-
|
|
23
|
+
// Categories. LazyPi installs the core catalog by default — "lazy" means you
|
|
24
|
+
// get the harness without thinking. The optional category holds evaluated
|
|
25
|
+
// packages worth managing but not part of the default; include them via the
|
|
26
|
+
// interactive picker or --only / --except.
|
|
27
|
+
const CATEGORIES = ["core", "optional"];
|
|
27
28
|
|
|
28
29
|
export const PACKAGES = [
|
|
29
30
|
{ id: "subagents", category: "core", source: "npm:pi-subagents", description: "Sub-agent execution", hint: "Run isolated sub-agents for parallel work." },
|
|
@@ -45,6 +46,11 @@ export const PACKAGES = [
|
|
|
45
46
|
{ id: "fff", category: "core", source: "npm:@ff-labs/pi-fff", description: "FFF fuzzy search", hint: "Additive fffind / ffgrep / fff-multi-grep beside the built-in tools; /fff-health checks the index." },
|
|
46
47
|
{ id: "dynamic-workflows", category: "core", source: "npm:@quintinshaw/pi-dynamic-workflows", description: "Workflow engine", hint: "Fan work out across subagents: /workflows TUI, deep-research, resume, token accounting." },
|
|
47
48
|
{ id: "ponytail", category: "core", source: "npm:@dietrichgebert/ponytail", description: "Lazy senior dev mode", hint: "Enforces minimal, stdlib-first code; /ponytail review, audit, and a debt ledger." },
|
|
49
|
+
{ id: "lsp", category: "optional", source: "npm:@narumitw/pi-lsp", description: "Targeted LSP diagnostics and fixes", hint: "lsp_diagnostics / lsp_fix with configurable language servers, started per call." },
|
|
50
|
+
{ id: "interactive-shell", category: "optional", source: "npm:pi-interactive-shell", description: "Interactive shell overlays", hint: "Run CLIs and agents in TUI overlays: interactive, hands-free, dispatch supervision." },
|
|
51
|
+
{ id: "autoresearch", category: "optional", source: "npm:pi-autoresearch", legacySources: ["git:github.com/davebcn87/pi-autoresearch"], description: "Autonomous experiment loops", hint: "Iterative optimization runs with hooks, finalize, and convergence tracking." },
|
|
52
|
+
{ id: "todos", category: "optional", source: "npm:pi-manage-todo-list", legacySources: ["git:github.com/tintinweb/pi-manage-todo-list"], description: "Structured todo tracking", hint: "Track multi-step work with live progress widgets and session persistence." },
|
|
53
|
+
{ id: "memory", category: "optional", source: "npm:pi-memory-md", legacySources: ["git:github.com/VandeeFeng/pi-memory-md"], description: "Markdown-backed memory", hint: "Letta-like git-backed memory: persistent context, prompt append, multi-project spaces." },
|
|
48
54
|
];
|
|
49
55
|
|
|
50
56
|
// ---------------------------------------------------------------------------
|
|
@@ -163,7 +169,7 @@ function resolveSelection(flags) {
|
|
|
163
169
|
validateSelectors(flags.except, "--except");
|
|
164
170
|
return new Set(PACKAGES.filter((p) => !matchesSelector(p, flags.except)).map((p) => p.id));
|
|
165
171
|
}
|
|
166
|
-
return new Set(PACKAGES.map((p) => p.id));
|
|
172
|
+
return new Set(PACKAGES.filter((p) => p.category === "core").map((p) => p.id));
|
|
167
173
|
}
|
|
168
174
|
|
|
169
175
|
// ---------------------------------------------------------------------------
|
|
@@ -191,20 +197,23 @@ ${bold("Install options:")}
|
|
|
191
197
|
-V, --version Show the installed version
|
|
192
198
|
|
|
193
199
|
${bold("Default behaviour:")}
|
|
194
|
-
- Every catalog package is installed (lazy on purpose)
|
|
195
|
-
|
|
200
|
+
- Every core catalog package is installed (lazy on purpose); optional
|
|
201
|
+
category packages are installed only when selected.
|
|
202
|
+
- On a TTY, an interactive picker appears with core pre-ticked;
|
|
196
203
|
untick categories or packages before confirming.
|
|
197
204
|
- With --yes, --only, or --except the picker is skipped.
|
|
198
205
|
|
|
199
206
|
${bold("Categories:")}
|
|
200
207
|
core the harness control plane: sub-agents, workflows, ask gate, skill visibility, $ mention, goal, side chat, context budget, simplify, web research, fff search, ponytail discipline
|
|
208
|
+
optional only when selected (--only optional, picker, or the everything flow): lsp diagnostics, interactive-shell overlays, autoresearch loops, todo tracking, markdown memory
|
|
201
209
|
Non-catalog extras (pi install npm:<source>): skill-args, memory, mcp,
|
|
202
|
-
|
|
210
|
+
ralph-wiggum, curated-themes (65 dark themes)
|
|
203
211
|
|
|
204
212
|
${bold("Examples:")}
|
|
205
|
-
npx @tommy-ca/lazypi #
|
|
206
|
-
npx @tommy-ca/lazypi --yes #
|
|
207
|
-
npx @tommy-ca/lazypi --only core
|
|
213
|
+
npx @tommy-ca/lazypi # core catalog (interactive picker on a TTY)
|
|
214
|
+
npx @tommy-ca/lazypi --yes # core catalog, no prompt
|
|
215
|
+
npx @tommy-ca/lazypi --only core,optional # install optional tier too
|
|
216
|
+
npx @tommy-ca/lazypi --only optional # just the optional tier
|
|
208
217
|
npx @tommy-ca/lazypi --only subagents,fff # individual package ids also work
|
|
209
218
|
npx @tommy-ca/lazypi --only core --local # core into the current project
|
|
210
219
|
npx @tommy-ca/lazypi status
|
|
@@ -529,6 +538,8 @@ async function cmdInstall(flags) {
|
|
|
529
538
|
const choice = await askLazyOrPick(PACKAGES.length);
|
|
530
539
|
if (choice === "pick") {
|
|
531
540
|
selectedIds = await runPicker(selectedIds);
|
|
541
|
+
} else {
|
|
542
|
+
selectedIds = new Set(PACKAGES.map((p) => p.id));
|
|
532
543
|
}
|
|
533
544
|
}
|
|
534
545
|
|