mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-11-05 23:37:25 +00:00
- P2Tool: origin (any|owner) and scope (any|main|subagent) on the tool; the worker's Durable registry checks them before each call (guardTool), no tool checks itself. owner: location tools, reload_plugins, conversations, ports, MCP tools. main: subagent, rename_session, conversations, ports, reload_plugins. subagent: team. - originOf reads pi.live.run.inputs through tx.submission: the owner's only if every input of the run is. Agent-written inputs record the writing turn's origin: subagent tasks and one-shot prompts, team messages, reports (answerOrigin), peer messages. No peer origin any more. - Subagents and one-shot agents get their caller's tools (default all, tools narrows), except scope main; with codemode the script-only tools; subagents get team. One-shot agents keep codemode and agent. A send takes away what the caller can no longer give.
19 lines
683 B
TypeScript
19 lines
683 B
TypeScript
import { contribute, defineFacet, expectVariant } from "@p2/app/v1";
|
|
import { Extensions, workerOf } from "@p2/app/v1/worker";
|
|
import { Ports } from "./contract.ts";
|
|
import { createPortsExtension } from "./tool.ts";
|
|
|
|
export default defineFacet((host) => {
|
|
contribute(host, "p2.port-tools", (self) => {
|
|
const worker = workerOf(self);
|
|
const extension = createPortsExtension(
|
|
(query, context) =>
|
|
worker().root(
|
|
async (ctx) => expectVariant(await ctx.get(Ports, {}), "worker").query({ conversation: 1, query }, ctx),
|
|
context.abortSignal,
|
|
),
|
|
() => worker().init.values.session.id,
|
|
);
|
|
self.contribute(Extensions, { [extension.name]: extension });
|
|
});
|
|
});
|