pi-famulus 0.2.1 → 0.2.2-beta.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 +1 -0
- package/package.json +7 -7
- package/src/index.ts +7 -0
- package/src/intercom/intercom.ts +1266 -0
- package/src/intercom/mention.ts +83 -0
- package/src/intercom/overlay.ts +439 -0
- package/src/intercom/transport.ts +102 -0
- package/src/intercom/types.ts +39 -0
- package/src/intercom/widgets.ts +130 -0
- package/src/manager-client.ts +27 -4
- package/src/reload-handoff.ts +8 -2
package/README.md
CHANGED
|
@@ -73,6 +73,7 @@ Run the full test suite and tell me what fails.
|
|
|
73
73
|
- **One daemon for every shell and monitor**: The daemon is the parent of every shell and monitor task across your pi sessions. If it crashes or is killed with `kill -9`, each task's process group is stopped. Commands that move into a new session with `setsid` escape this.
|
|
74
74
|
- **Shared capacity**: By default, at most 8 subagents run at once across all pi sessions on the machine (`pi-famulus config set max-agents <n>` changes it). The rest wait in a queue. Subagents labelled `work_kind: "test-suite"` or `"test"` are capped at 2 at a time; without a label, a subagent counts as `other`.
|
|
75
75
|
- **Parent and subagent talk**: A subagent asks its parent a question with `contact_supervisor` and waits for the answer. You can answer it yourself with `/reply`. `agent_message` sends messages between parent and subagents.
|
|
76
|
+
- **Cross-session messaging (agent-intercom)**: pi sessions join the local agent-intercom bridge over the same manager connection — no second socket. `SendMessage` / `ListSessions` tools, `/rename` and the `/intercom` session overlay, `@name` completion inserting `<RequestSendMessage … />` markers, a standing cross-session system-prompt section, `<cross-session-message>` deliver envelopes with read receipts, and authoritative busy/idle publication. Peer messages are input, not authority: they never grant consent. If the bridge is disabled (`PI_FAMULUS_NO_INTERCOM`) the feature stays silent; if it is down, pi-famulus says so once and retries every 3 seconds. Absorbed from the agent-intercom pi plugin (upstream baseline 98183fb); an installed legacy plugin is detected and you are asked to remove it.
|
|
76
77
|
- **Inspectable**: In a terminal, `pi-famulus top` is a live dashboard of sessions, subagents, shells and monitors. Open a subagent to read its conversation or a task to read its output, and stop a running shell or monitor from there. `ls`, `show`, `agent` and `events` show what ran, why it ended, and why a notification did or did not arrive.
|
|
77
78
|
- **Tested against real models**: Tool descriptions are graded on real-model runs. The latest matrix (2026-10-08; 12 xAI and OpenAI configurations, 10 scenarios, k=10) recorded 1198 passes and 2 failures, with 6 invalid or errored episodes excluded ([eval/RESULTS.md](https://github.com/Leechael/pi-famulus/blob/main/eval/RESULTS.md)). It predates a later wording change to the `subagent` and wake prompts ([PR #62](https://github.com/Leechael/pi-famulus/pull/62)), which has not been through the full matrix yet.
|
|
78
79
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-famulus",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2-beta.0",
|
|
4
4
|
"description": "Keep your main agent's context clean: subagents on cheaper models, long bash in the background, and monitors that wake the agent. One Rust daemon runs the shells.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
@@ -54,12 +54,12 @@
|
|
|
54
54
|
"pi-famulus": "./bin/pi-famulus.js"
|
|
55
55
|
},
|
|
56
56
|
"optionalDependencies": {
|
|
57
|
-
"pi-famulus-linux-x64": "0.2.
|
|
58
|
-
"pi-famulus-linux-arm64": "0.2.
|
|
59
|
-
"pi-famulus-darwin-x64": "0.2.
|
|
60
|
-
"pi-famulus-darwin-arm64": "0.2.
|
|
61
|
-
"pi-famulus-win-x64": "0.2.
|
|
62
|
-
"pi-famulus-win-arm64": "0.2.
|
|
57
|
+
"pi-famulus-linux-x64": "0.2.2-beta.0",
|
|
58
|
+
"pi-famulus-linux-arm64": "0.2.2-beta.0",
|
|
59
|
+
"pi-famulus-darwin-x64": "0.2.2-beta.0",
|
|
60
|
+
"pi-famulus-darwin-arm64": "0.2.2-beta.0",
|
|
61
|
+
"pi-famulus-win-x64": "0.2.2-beta.0",
|
|
62
|
+
"pi-famulus-win-arm64": "0.2.2-beta.0"
|
|
63
63
|
},
|
|
64
64
|
"pi": {
|
|
65
65
|
"extensions": [
|
package/src/index.ts
CHANGED
|
@@ -28,6 +28,7 @@ import { describeManagerSearch, getFamulusHome, loadConfig, resolveManagerPath,
|
|
|
28
28
|
import { ensureNativeManagerInstalled } from "./native-manager.js";
|
|
29
29
|
import type { TaskExitInfo } from "./format";
|
|
30
30
|
import { EXTENSION_VERSION, ManagerClient, type ManagerEvent, type TaskRecord } from "./manager-client";
|
|
31
|
+
import { registerIntercom } from "./intercom/intercom";
|
|
31
32
|
import { createMonitorTool, exitEventFromRecord, MonitorRegistry } from "./monitor";
|
|
32
33
|
import { admitAgentChild, reregisterAgentLeases } from "./subagent/admission";
|
|
33
34
|
import { NotifyCenter } from "./notify";
|
|
@@ -1284,5 +1285,11 @@ function createFamulusRuntime(retiring?: Promise<unknown>): FamulusRuntime {
|
|
|
1284
1285
|
return message ? { message } : undefined;
|
|
1285
1286
|
});
|
|
1286
1287
|
|
|
1288
|
+
// The intercom port (cross-session messaging, absorbed from the
|
|
1289
|
+
// agent-intercom pi plugin) rides the same manager connection. Registered
|
|
1290
|
+
// after the session hooks above so its session_start sees the fresh
|
|
1291
|
+
// client. Hosted children never reach here (child-mode returns early).
|
|
1292
|
+
registerIntercom(pi, { getClient: () => client });
|
|
1293
|
+
|
|
1287
1294
|
return runtime;
|
|
1288
1295
|
}
|