@lincoln504/pi-research 1.6.12 → 1.6.14
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 +5 -4
- package/agent-skill/pi-research/SKILL.md +1 -1
- package/docs/CHANGELOG.md +24 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -34,6 +34,8 @@
|
|
|
34
34
|
|
|
35
35
|
Search and scraping run locally through a stealth browser with no search provider and no monthly cap. The only cost is LLM tokens.
|
|
36
36
|
|
|
37
|
+
**Current recommended model:** [`inclusionai/ling-3.0-flash`](https://openrouter.ai/inclusionai/ling-3.0-flash) on OpenRouter: cheap, intelligent, and fast.
|
|
38
|
+
|
|
37
39
|
### Install
|
|
38
40
|
|
|
39
41
|
As a [Pi](https://github.com/earendil-works/pi) Coding Agent extension:
|
|
@@ -68,7 +70,7 @@ A research run loops through agent teams: a coordinator plans and starts with a
|
|
|
68
70
|
|
|
69
71
|
Three depth levels (normal, deep, ultra) set the team size and number of rounds. A natural-language request is enough; the tool picks the right one:
|
|
70
72
|
|
|
71
|
-

|
|
72
74
|
|
|
73
75
|
### Use cases
|
|
74
76
|
|
|
@@ -81,14 +83,13 @@ Three depth levels (normal, deep, ultra) set the team size and number of rounds.
|
|
|
81
83
|
|
|
82
84
|
- **No quota and no monthly fee.** Most AI search providers cap free searches and then charge, with results served from their index on their servers. pi-research searches and scrapes locally through DuckDuckGo in a stealth browser.
|
|
83
85
|
- **The index is local.** Every finding can be saved to a local [LanceDB](https://lancedb.com) knowledge store that seeds future runs, so repeat questions get faster and cheaper answers.
|
|
84
|
-
- **Read-only by design.** The research agent cannot run shell commands or write, edit, or delete anything
|
|
86
|
+
- **Read-only by design.** The research agent cannot run shell commands or write, edit, or delete anything. Prompt injection picked up mid-run has nothing to act on.
|
|
85
87
|
- **Search a little or a lot.** Depth levels range from a quick pass to a large-scale investigation.
|
|
86
88
|
|
|
87
89
|
### Requirements / limitations
|
|
88
90
|
|
|
89
91
|
- Node.js >= 22.19.0
|
|
90
92
|
- An LLM with a 100k+ context window (an API key or a local model)
|
|
91
|
-
- On OpenRouter, `inclusionai/ling-3.0-flash` is a proven low-cost workhorse for driving runs: $0.021 input / $0.063 output per Mtok with a 262k context window — the cheapest capable model on the platform at time of writing — with reliable strict-JSON planning output and fast synthesis (verified over extended production use). The `:free` variants (`ling-3.0-flash-fin:free`) work for light usage but are subject to free-tier rate limits. Note: `ling-3.0-tiny` currently has no serving endpoints on OpenRouter and cannot be called.
|
|
92
93
|
- Internet access on a residential IP, since search, scraping, and YouTube transcripts get bot-blocked from datacenter/VPS/cloud IPs
|
|
93
94
|
- pi. The pi extension uses the host's copy while the standalone CLI and agent skill install it as a dependency.
|
|
94
95
|
- Local knowledge-store embeddings need `@huggingface/transformers`, which is an **optional dependency**: if its native image chain (sharp) cannot install on your machine, npm skips it with a warning, the install still succeeds, and everything except local embeddings works. The store disables embeddings gracefully with a message telling you how to restore them.
|
|
@@ -96,7 +97,7 @@ Three depth levels (normal, deep, ultra) set the team size and number of rounds.
|
|
|
96
97
|
|
|
97
98
|
### Channels
|
|
98
99
|
|
|
99
|
-
npm (`npm:@lincoln504/pi-research`) is the stable channel and is kept current with breaking pi changes. A git install is the development channel. It has the latest commits and
|
|
100
|
+
npm (`npm:@lincoln504/pi-research`) is the stable channel and is kept current with breaking pi changes. A git install is the development channel. It has the latest commits, and receives breaking changes first.
|
|
100
101
|
|
|
101
102
|
### License
|
|
102
103
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: pi-research
|
|
3
3
|
description: "Multi-agent web research for any coding agent. Use for anything requiring current information from the internet — news, trends, product/service/company facts, statistics, people, places, events, APIs, library behavior, or 'what is X / how does X work' questions. Also use to search a local knowledge store of previously researched findings before doing live research. Powered by the pi-research engine (search, stealth scraping, security databases, Stack Exchange). Not for reading local files, running project commands, or analyzing this repository's own source."
|
|
4
4
|
license: MIT
|
|
5
|
-
metadata: { "author": "Lincoln Deen", "version": "1.6.
|
|
5
|
+
metadata: { "author": "Lincoln Deen", "version": "1.6.14", "package": "@lincoln504/pi-research", "engine": "pi-research-sdk", "openclaw": { "requires": { "bins": ["node"] } } }
|
|
6
6
|
allowed-tools: Bash(node:*)
|
|
7
7
|
---
|
|
8
8
|
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -7,12 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.6.14] - 2026-09-08
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **README: the hero image (the two-parallel-runs screenshot from the pi extension page) is now the README's feature image.** The static frame extracted from the deleted GIF lasted one day; the bundled `docs/media/hero.png` — two simultaneous research runs with the per-researcher panels — is the image actually representative of the tool, and the now-unneeded `prompt-research.png` frame is removed.
|
|
15
|
+
|
|
16
|
+
## [1.6.13] - 2026-09-08
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- **README: the model recommendation moved to the top and shrank to one sentence.** The long RESEARCH_MODEL paragraph that sat inside Requirements/limitations since the 2026-09-07 commit is now a bold "**Current recommended model:** [`inclusionai/ling-3.0-flash`](https://openrouter.ai/inclusionai/ling-3.0-flash) on OpenRouter — cheap, intelligent, and fast." line above Install; the pricing/rate-limit detail was dropped.
|
|
21
|
+
|
|
22
|
+
- **README: the prompt-research GIF was replaced by a static frame.** `02-prompt-research.gif` (2.8 MB) is removed from the repo; `docs/media/prompt-research.png` (23 KB, the frame showing the "Research in depth the history of apples" prompt and the run kicking off) takes its place. The GIF was referenced only by README.md, so no other docs change; the tarball gets ~2.8 MB lighter.
|
|
23
|
+
|
|
24
|
+
- **Dependency refresh, lockfile-only: `@earendil-works/*` 0.85.0→0.85.1 and `@typescript-eslint/*` 8.69→8.70.** Both are within the existing package.json ranges, so consumer installs are unaffected by the lockfile change itself — a fresh install already resolves 0.85.1 (verified by packing the tarball and installing it into a clean project: pi 0.85.1 resolves, the documented dual apache-arrow layout reproduces, `pi-research --help` boots). `PI_TESTED_MAX_VERSION` compares on major.minor only, so the patch stays inside the tested window with no warning. Deliberate holds unchanged: apache-arrow 21.1.0 (LanceDB IPC), playwright-core 1.60.0 (camoufox < 1.61), typescript < 6.1.0 (eslint peer ceiling).
|
|
25
|
+
|
|
26
|
+
- **README prose fixes: the last abstraction-speak is gone.** The "Read-only by design" bullet no longer claims the tool is "the right shape" for anything (a metaphor with no referent); it now states the two facts plainly: the research agent cannot run shell commands or write, edit, or delete anything, and prompt injection picked up mid-run has nothing to act on. "Breaks first" on the git-install channel is spelled out as "receives breaking changes first", and the model-recommendation line's stray em dash (the README was purged of them in the 1.6.9 cycle) is a colon now.
|
|
27
|
+
|
|
10
28
|
### Fixed
|
|
11
29
|
|
|
30
|
+
- **`npm ci` under npm 12 rejected the lockfile an `npm update` had rewritten** (this release cycle's own dep refresh): the rewrite dropped the `node-domexception@1.0.28` alias entry backing the `@nolyfill/domexception` override while leaving a stale real `node-domexception@1.0.0` copy nested under `@earendil-works/pi-coding-agent`. npm 11 (the local dev npm) accepted the tree; CI's npm 12 is stricter and failed every `npm ci --legacy-peer-deps` leg. The lockfile was regenerated with npm 12 itself, which collapses the stale nested copy so the override is the only resolution; `npm ci --legacy-peer-deps` now validates clean under both npm 11 and npm 12, and CI is green cross-OS.
|
|
31
|
+
|
|
12
32
|
- **Stack Exchange tool output can no longer open a real browser tab when clicked.** The tool's formatters emitted markdown links (`[title](link)`) and bare URLs, and question/answer bodies carried third-party markup — any markdown-rendering surface (assistant replies, research reports, the terminal UI, which turns markdown links AND bare URLs into OSC 8 terminal hyperlinks and opens them in the system browser on mouse press+release) turned these into click-to-open-tab targets in the middle of scrolling tool output. New `src/utils/plain-url.ts` fixes this at the source, cross-platform and renderer-independent: `plainUrl()` wraps every emitted URL in backticks (code spans tokenize before autolink/link parsing in every CommonMark renderer, so a code-spanned URL can never become a link but stays byte-exact and copyable for the model), and `fenceBlock()` wraps third-party body content in a fenced code block whose length grows past any backtick run in the content (embedded links, headings and tables render inert; content containing its own ``` fences cannot close the fence early). All stackexchange formatters (questions, answers, users, sites, compact variants, and the `get`+compact path) now emit code-spanned URLs and own-line-fenced bodies — fence placement matters: an opening fence inline after `- **Body:**` is NOT recognized as a code block by CommonMark and was verified (against pi's bundled `marked`) to still render embedded links clickable, so the fence starts on its own line. The tool's prompt guidelines now also instruct the model never to re-emit result URLs as markdown links, covering the assistant-echo path. Pinned by `test/unit/stackexchange/output/no-clickable-links.test.ts`, which scans each formatter's clickable surface (post code-span/fence stripping) for link syntax and — when `marked` is resolvable — renders the actual output and asserts zero anchor elements.
|
|
13
33
|
|
|
14
34
|
- **CI: declare `vite` as an explicit devDependency.** CI installs with `--legacy-peer-deps`, which skips peer dependency resolution — `vite` was only reachable as a transitive peer and the install could not resolve it. Now declared directly.
|
|
15
35
|
|
|
36
|
+
### Verified
|
|
37
|
+
|
|
38
|
+
- 3,064 unit tests over 242 files, ESLint clean, all four type-checks (TS 6 src + tests, TS 7 native src + tests), dependency-cruiser and madge clean (190 modules, no circular dependencies), build, and `npm ci --dry-run` manifest verification; `npm audit` reports 0 vulnerabilities. The packed tarball was installed into a clean project: pi 0.85.1 resolves fresh, the documented dual apache-arrow layout (21.1.0 nested / 18.1.0 hoisted for LanceDB) reproduces, and the installed CLI boots. CI green cross-OS (ubuntu ×2, macOS, Windows) including the consumer fresh-install and Arrow/LanceDB interop legs. For this cycle additionally: the tarball installed and the CLI booted under npm 10, npm 11, and npm 12 alike, with the dual apache-arrow layout identical across all three.
|
|
39
|
+
|
|
16
40
|
## [1.6.11] - 2026-09-04
|
|
17
41
|
|
|
18
42
|
### Changed
|