UNPKG

@earendil-works/pi-coding-agent

Version:

Coding agent CLI with read, bash, edit, write tools and session management

33 lines • 1.62 kB
/** * The `codemode` tool as an extension. The CLI loads it as a built-in extension; SDK users * add `createCodemodeExtension()` to their extension factories. * * `codemode` is registered inactive. Activate it with `--tools`, the `defaultTools` setting, or * `setActiveTools()`; the MCP extension activates it when MCP tools are only reachable from scripts. */ import { SETTINGS_DEFAULTS } from "../../core/settings-defaults.js"; import { createCodemodeToolDefinition } from "./tool.js"; function readMode(pi) { return pi.getSettings().codemode?.mode === "only" ? "only" : SETTINGS_DEFAULTS.codemode.mode; } function readInlineBudget(pi) { const budget = pi.getSettings().codemode?.inlineBudget; return typeof budget === "number" && Number.isFinite(budget) && budget >= 0 ? budget : undefined; } export function createCodemodeExtension(options = {}) { return (pi) => { pi.registerTool({ ...createCodemodeToolDefinition({ appendEntry: (customType, data) => pi.appendEntry(customType, data), models: options.models ?? true, getToolNamespace: (name) => pi.getAllTools().find((tool) => tool.name === name)?.namespace, getToolGuidelines: () => new Map(pi.getAllTools().map((tool) => [tool.name, tool.promptGuidelines ?? []])), getMode: () => options.mode ?? readMode(pi), getInlineBudget: () => options.inlineBudget ?? readInlineBudget(pi), }), defaultActive: false, }); }; } export default createCodemodeExtension(); //# sourceMappingURL=index.js.map