@companion-ai/feynman 0.5.21 → 0.5.22
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,11 @@ GitHub release notes are generated from the matching `## vX.Y.Z` section in this
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
+
## v0.5.22 - 2026-10-01
|
|
10
|
+
|
|
11
|
+
- **Launch warnings and the first-run telemetry notice show inside the session.** Feynman printed them to the terminal just before starting Pi, where Pi 1.0's fullscreen interface (coming in a later Feynman release) hides them for the whole session. They now appear in Pi's own interface: the Windows "No Bash found" warning, the small-local-model warning for research workflows, and the one-time telemetry disclosure. A one-shot `--prompt` run still prints them to stderr.
|
|
12
|
+
- `feynman doctor` reports Pi's new `quietStartup: "header"` setting as "header only" instead of "disabled".
|
|
13
|
+
|
|
9
14
|
## v0.5.21 - 2026-10-01
|
|
10
15
|
|
|
11
16
|
- **LiteLLM and custom providers that read their key from an environment variable work again.** Since Pi 0.99, `models.json` resolves an environment variable only when written as `$NAME`; a bare name is sent as the key itself. Feynman's LiteLLM setup wrote `LITELLM_MASTER_KEY`, so requests went out as `Authorization: Bearer LITELLM_MASTER_KEY` and the proxy rejected them, and custom providers set up with a variable name broke the same way. Feynman now writes `$NAME`, and on start rewrites any `apiKey` in `models.json` that is a bare all-caps variable name, such as `LITELLM_MASTER_KEY`, to `$LITELLM_MASTER_KEY`. Literal keys, placeholders such as `local`, and `!command` values are left alone.
|
package/dist/pi/launch.js
CHANGED
|
@@ -41,15 +41,10 @@ export async function runPi(options, args, env, stdin = "inherit") {
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
export async function launchPiChat(options) {
|
|
44
|
+
let telemetryNotice;
|
|
44
45
|
if (process.stdout.isTTY && options.mode !== "rpc") {
|
|
45
46
|
process.stdout.write("\x1b[2J\x1b[3J\x1b[H");
|
|
46
|
-
|
|
47
|
-
const telemetryNotice = telemetryFirstRunNotice();
|
|
48
|
-
if (telemetryNotice)
|
|
49
|
-
process.stderr.write(`${telemetryNotice}\n`);
|
|
50
|
-
}
|
|
51
|
-
if (options.preLaunchNotice) {
|
|
52
|
-
process.stdout.write(`${options.preLaunchNotice}\n`);
|
|
47
|
+
telemetryNotice = telemetryFirstRunNotice();
|
|
53
48
|
}
|
|
54
49
|
const executables = await resolveAllExecutables();
|
|
55
50
|
ensureFeynmanCommandShim(options.appRoot, options.feynmanAgentDir);
|
|
@@ -59,5 +54,13 @@ export async function launchPiChat(options) {
|
|
|
59
54
|
// explicit prompt forever.
|
|
60
55
|
const explicitPrompt = Boolean(options.oneShotPrompt || options.initialPrompt);
|
|
61
56
|
const stdin = explicitPrompt && options.mode !== "rpc" && !process.stdin.isTTY ? "ignore" : "inherit";
|
|
62
|
-
|
|
57
|
+
// Pi's fullscreen UI hides anything printed before it starts, so the TUI
|
|
58
|
+
// session shows these itself; one-shot and JSON runs print them as before.
|
|
59
|
+
const notice = [telemetryNotice, options.preLaunchNotice].filter(Boolean).join("\n");
|
|
60
|
+
const tui = options.mode !== "rpc" && options.mode !== "json" && !options.oneShotPrompt;
|
|
61
|
+
if (notice && !tui)
|
|
62
|
+
process.stderr.write(`${notice}\n`);
|
|
63
|
+
const env = buildPiEnv(options, executables);
|
|
64
|
+
env.FEYNMAN_LAUNCH_NOTICE = notice && tui ? notice : undefined;
|
|
65
|
+
process.exitCode = await runPi(options, buildPiArgs(options), env, stdin);
|
|
63
66
|
}
|
package/dist/setup/doctor.js
CHANGED
|
@@ -171,7 +171,7 @@ export async function runDoctor(options) {
|
|
|
171
171
|
for (const line of formatPiWebAccessDoctorLines()) {
|
|
172
172
|
console.log(line);
|
|
173
173
|
}
|
|
174
|
-
console.log(`quiet startup: ${settings.quietStartup === true ? "enabled" : "disabled"}`);
|
|
174
|
+
console.log(`quiet startup: ${settings.quietStartup === "header" ? "header only" : settings.quietStartup === true ? "enabled" : "disabled"}`);
|
|
175
175
|
console.log(`theme: ${typeof settings.theme === "string" ? settings.theme : "not set"}`);
|
|
176
176
|
if (missingPiBits.length > 0) {
|
|
177
177
|
console.log("pi runtime: missing files");
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
|
|
3
|
+
export function registerLaunchNotice(pi: ExtensionAPI): void {
|
|
4
|
+
pi.on("session_start", (_event, ctx) => {
|
|
5
|
+
const notice = process.env.FEYNMAN_LAUNCH_NOTICE;
|
|
6
|
+
delete process.env.FEYNMAN_LAUNCH_NOTICE;
|
|
7
|
+
if (notice && ctx.mode === "tui" && ctx.hasUI) {
|
|
8
|
+
// Pi labels warnings itself.
|
|
9
|
+
ctx.ui.notify(notice.replace(/^Warning: /gm, ""), "warning");
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
}
|
|
@@ -7,6 +7,7 @@ import { registerDocxFallback } from "./research-tools/docx-fallback.js";
|
|
|
7
7
|
import { installFeynmanHeader } from "./research-tools/header.js";
|
|
8
8
|
import { registerHelpCommand } from "./research-tools/help.js";
|
|
9
9
|
import { registerHuggingFaceTools } from "./research-tools/huggingface.js";
|
|
10
|
+
import { registerLaunchNotice } from "./research-tools/launch-notice.js";
|
|
10
11
|
import { registerInitCommand, registerOutputsCommand } from "./research-tools/project.js";
|
|
11
12
|
import { registerServiceTierControls } from "./research-tools/service-tier.js";
|
|
12
13
|
import { registerScienceDatabaseTools } from "./research-tools/science-databases.js";
|
|
@@ -27,6 +28,7 @@ export default function researchTools(pi: ExtensionAPI): void {
|
|
|
27
28
|
registerDocxFallback(pi);
|
|
28
29
|
registerHelpCommand(pi);
|
|
29
30
|
registerInitCommand(pi);
|
|
31
|
+
registerLaunchNotice(pi);
|
|
30
32
|
registerOutputsCommand(pi);
|
|
31
33
|
registerServiceTierControls(pi);
|
|
32
34
|
registerScienceDatabaseTools(pi);
|