@companion-ai/feynman 0.5.57 → 0.5.59

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/RELEASES.md CHANGED
@@ -6,6 +6,26 @@ GitHub release notes are generated from the matching `## vX.Y.Z` section in this
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ ## v0.5.59 - 2026-10-28
10
+
11
+ - **pi-subagents 0.83.1.**
12
+ - Stopping, interrupting or resuming a research subagent can no longer act on the wrong run: an interrupt with no id is refused, and resuming a worktree child while it is still cleaning up no longer runs it in your main checkout.
13
+ - Agent files with a blank line inside an indented frontmatter block are read in full, so settings below that line are no longer dropped.
14
+ - The startup header no longer crashes Feynman when the terminal is two columns wide or less.
15
+ - Five more `undici` advisories published Oct 27 ([GHSA-4w7w-5xrc-9h26](https://github.com/advisories/GHSA-4w7w-5xrc-9h26), [GHSA-2m5v-pch6-74hx](https://github.com/advisories/GHSA-2m5v-pch6-74hx), [GHSA-qrxm-fqhp-jwvm](https://github.com/advisories/GHSA-qrxm-fqhp-jwvm), [GHSA-9fm3-97px-rjf6](https://github.com/advisories/GHSA-9fm3-97px-rjf6), [GHSA-55wc-3pg8-jfw6](https://github.com/advisories/GHSA-55wc-3pg8-jfw6)) are already fixed in the `undici` 8.12.3 Feynman installs. Pi 1.4.0's own pinned 8.10.2 copy still has them until Pi ships its next release.
16
+
17
+ ## v0.5.58 - 2026-10-26
18
+
19
+ - **pi-subagents 0.83.0.**
20
+ - Background research subagents that finished their work always report it, instead of ending as "exited with code 0 before writing a result"; a foreground subagent whose child stops after its final reply returns instead of hanging.
21
+ - Turns after a subagent returns keep the prompt cache on models that take mid-conversation system messages, so they are cheaper and faster.
22
+ - pi-subagents now uses a patched `undici` (8.12.3), so only Pi's own pinned copy remains (see v0.5.57).
23
+ - **pi-web-access 0.45.0.**
24
+ - The web tools add about 1.1k tokens to every model request instead of 2.8k.
25
+ - DuckDuckGo search no longer gets your IP blocked by its bot check when several searches run at once.
26
+ - `source_check` shows the matching passages under each source.
27
+ - `feynman search set ninerouter <base-url>` selects a self-hosted [9router](https://github.com/decolua/9router) gateway.
28
+
9
29
  ## v0.5.57 - 2026-10-24
10
30
 
11
31
  - **Security updates from advisories published Oct 23.**
@@ -8,9 +8,9 @@ export const PI_WEB_SEARCH_PROVIDERS = [
8
8
  "auto", "all", "openai", "brave", "parallel", "parallel-mcp", "tinyfish", "search1api", "searchinfinity", "querit",
9
9
  "tavily", "you", "firecrawl", "jina", "searxng", "degoog", "duckduckgo", "perplexity", "gemini", "kimi", "exa",
10
10
  "serpdive", "kagi", "ollama", "anysearch", "xai", "mistral", "brightdata", "serpbase", "serpapi", "serper", "serply",
11
- "valyu", "bocha", "xcrawl", "baizhi", "zai", "keenable", "ceramic", "deepseek", "linkup",
11
+ "valyu", "bocha", "xcrawl", "baizhi", "zai", "keenable", "ceramic", "deepseek", "linkup", "ninerouter",
12
12
  ];
13
- // The web-search.json field holding a provider's key (searxng takes its base URL);
13
+ // The web-search.json field holding a provider's key (searxng and ninerouter take their base URL);
14
14
  // undefined for providers with nothing to set.
15
15
  export function searchProviderKeyField(provider) {
16
16
  if (provider === "auto" || provider === "all" || provider === "duckduckgo" || provider === "kimi")
@@ -19,6 +19,8 @@ export function searchProviderKeyField(provider) {
19
19
  return "parallelApiKey";
20
20
  if (provider === "searxng")
21
21
  return "searxngBaseUrl";
22
+ if (provider === "ninerouter")
23
+ return "ninerouterBaseUrl";
22
24
  return `${provider}ApiKey`;
23
25
  }
24
26
  const ROUTE_LABELS = { auto: "Auto", perplexity: "Perplexity", exa: "Exa", gemini: "Gemini" };
@@ -201,8 +201,8 @@ export function installFeynmanHeader(
201
201
  render(width: number): string[] {
202
202
  const maxW = Math.max(width - 2, 1);
203
203
  const cardW = Math.min(maxW, 120);
204
- const innerW = cardW - 2;
205
- const contentW = innerW - 2;
204
+ const innerW = Math.max(cardW - 2, 0);
205
+ const contentW = Math.max(innerW - 2, 0);
206
206
  const outerPad = " ".repeat(Math.max(0, Math.floor((width - cardW) / 2)));
207
207
  const lines: string[] = [];
208
208
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@companion-ai/feynman",
3
- "version": "0.5.57",
3
+ "version": "0.5.59",
4
4
  "description": "The open source AI research agent.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -85,8 +85,8 @@
85
85
  "fast-xml-parser": "5.11.2",
86
86
  "pi-btw": "0.8.0",
87
87
  "pi-docparser": "4.0.0",
88
- "pi-subagents": "0.81.0",
89
- "pi-web-access": "0.44.0",
88
+ "pi-subagents": "0.83.1",
89
+ "pi-web-access": "0.45.0",
90
90
  "posthog-node": "^5.53.0",
91
91
  "undici": "^8.12.3"
92
92
  },