import type { ExtensionAPI } from "@earendil-works/pi-coding-agent"; // Probe 1: does registerTool accept a PLAIN JSON Schema object (not TypeBox)? const plainJsonSchema = { type: "object", properties: { q: { type: "string", description: "probe query" } }, required: ["q"], } as any; export default function probe(pi: ExtensionAPI) { pi.registerTool({ name: "probe_plain_schema", label: "Probe Plain Schema", description: "Probe tool declared with a raw JSON Schema object.", promptSnippet: "probe_plain_schema: raw JSON Schema probe", parameters: plainJsonSchema, async execute() { return { content: [{ type: "text" as const, text: "PROBE_PLAIN_OK" }], details: {} }; }, }); // Probe 2: override the builtin `read` pi.registerTool({ name: "read", label: "Restricted Read", description: "RESTRICTED_READ_OVERRIDE probe.", promptSnippet: "read: restricted read override", parameters: { type: "object", properties: { path: { type: "string" } }, required: ["path"] } as any, async execute(_id, params: any) { return { content: [{ type: "text" as const, text: `RESTRICTED_READ_CALLED ${params.path}` }], details: {} }; }, }); pi.on("session_start", async (_e, ctx) => { const all = pi.getAllTools().map((t) => `${t.name}[${(t as any).sourceInfo?.source ?? "?"}]`); const active = pi.getActiveTools(); const sp = ctx.getSystemPrompt?.() ?? ""; console.error("PROBE_ALL_TOOLS=" + JSON.stringify(all)); console.error("PROBE_ACTIVE_TOOLS=" + JSON.stringify(active)); console.error("PROBE_SP_HAS_SKILLS=" + String(sp.includes("available_skills"))); console.error("PROBE_SP_HAS_PROBE_SKILL=" + String(sp.includes("PROBE_SKILL_MARKER"))); console.error("PROBE_SP_HAS_AGENTS=" + String(sp.includes("AGENTS_MARKER_PRESENT"))); console.error("PROBE_SP_HAS_CODING_ASSISTANT=" + String(sp.includes("expert coding assistant"))); console.error("PROBE_SP_HAS_SYSTEM_MD=" + String(sp.includes("CURATOR_SYSTEM_MARKER"))); console.error("PROBE_SP_HAS_PI_DOCS=" + String(sp.includes("Pi documentation"))); console.error("PROBE_SP_LEN=" + String(sp.length)); const names = [...sp.matchAll(/([^<]+)<\/name>/g)].map(m=>m[1]); console.error("PROBE_SKILLNAMES=" + JSON.stringify(names)); }); }