@earendil-works/pi-coding-agent
Version:
Coding agent CLI with read, bash, edit, write tools and session management
33 lines • 1.62 kB
JavaScript
/**
* 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